Es una plataforma para el desarrollo de sistemas microcontrolados, que esta bajo el concepto de hardware libre (copiado, distribuido, modificado, y fabricado libremente). ARDUINO esta diseñado con microcontroladores ATMEL de diferentes referencias, lo que nos lleva a tener varias plataformas ARDUINO. Lo mejor de Arduino es que esta muy bien documentado su uso y hay mucha informacion. Para mas informacion podemos visitar: http://arduino.cc/es/Guide/Introduction http://es.wikipedia.org/wiki/Arduino
Con este circuito podemos saber la posición de un potenciometro que esta conectado al modulo conversor análogo a digital de un microcontrolador PIC16F886.
El potenciometro puede ser reemplazado con cualquier tipo de sensor para así poder monitorear el estado o nivel de cualquier variable.
otros ejemplos de uso del conversor análogo a digital:
Copyright 2012 edwtron Este DOCUMENTO es un DOCUMENTO LIBRE, usted puede redistribuirlo y/o modificarlo bajo los terminos de la GNU FDL tal y como es publicada por la fundacion de software libre; bajo la version 1.3 de la licencia, o una version superior. Leer la licencia GNU gpl para mas detalles.
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".
Vamos a implementar el PWM (para que recuerden que es PWM en la Wikipedia) con un microcontrolador 16F886. la idea es usar el modulo de PWM que traen algunos Microcontroladores PIC.
Usaremos el pin RB2/CCP1 com salida donde tendremos el pulso de ancho variable.
Se usa un comparador que activa un bit cuando el valor del registro PR2 coincide con la parte alta del TMR2, en ese momento el TMR2 toma el valor 00, luego el bit se pone en cero cuando otro comparador detecta que la parte del TMR2 y el CCPR1H son iguales.
En PR2 se asigna el periodo T = (PR2 + 1)*4*Tosc * Valor predivisor TMR2
En CCPR1L se carga el ancho del pulso, que luego pasa a CCPR1H
Analicemos:
MOVLW B'00001101' MOVWF CCP1CON; Modo PWM <3,2,1,0>, bit <5,4> en ceros MOVLW B'00000100'; <1x> Un prescaler de 16 da un periodo apox de 4ms y una frec de 244Hz ; <01> Un prescaler de 4 da un periodo apox de 1ms y una frec de 1KHz ; <00> Un prescaler de 1 da un periodo apox de 250us y una frec de 4KHz MOVWF T2CON; Prescaler 16 <1,0> y activa el TMR2 <2>
ORG00 GOTOINICIO
RET_100MS;99998 cycles movlw0x1F movwfd1 movlw0x4F movwfd2
Delay_0 decfszd1, f goto$+2 decfszd2, f gotoDelay_0
;2 cycles goto$+1 RETURN
INICIONOP BANKSEL OSCCON MOVLW B'01101100' MOVWF OSCCON BANKSELTRISA CLRFTRISB MOVLWB'00000000'; Configuro RC2 como sailida MOVWFPORTC MOVLW.255 MOVWFPR2; Asigno el periodo BANKSELPORTB MOVLW0XFF MOVWFPORTB MOVLWB'00001101' MOVWFCCP1CON; Modo PWM <3,2,1,0>, bit <5,4> en ceros MOVLWB'00000100'; <1x> Un prescaler de 16 da un periodo apox de 4ms y una frec de 244Hz ; <01> Un prescaler de 4 da un periodo apox de 1ms y una frec de 1KHz ; <00> Un prescaler de 1 da un periodo apox de 250us y una frec de 4KHz MOVWFT2CON; Prescaler 16 <1,0> y activa el TMR2 <2> CLRFCCPR1L; Duty en cero (0)
Copyright 2012 edwtron Este DOCUMENTO es un DOCUMENTO LIBRE, usted puede redistribuirlo y/o modificarlo bajo los terminos de la GNU FDL tal y como es publicada por la fundacion de software libre; bajo la version 1.3 de la licencia, o una version superior. Leer la licencia GNU gpl para mas detalles.
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".
Este secuenciador tiene seis modos de secuencia diferentes, que se seleccionan con un pulsador. Para cambiar de secuencia se deja presionado el pulsador hasta que esta cambie.
El programa se hizo de dos formas diferentes, en la primera forma se usa en cada secuencia una rutina para mostrarla, lo que da como resultado un programa mas o menos largo y la segunda forma nos ahorra unas cuantas lineas de código (como 40 lineas) usamos una sola rutina para todas las secuencias.
Video del circuito:
Voy a publicar las dos formas para que se analicen las diferencias y se vea la ventaja de usar subrrutinas.
Copyright 2012 edwtron Este DOCUMENTO es un DOCUMENTO LIBRE, usted puede redistribuirlo y/o modificarlo bajo los terminos de la GNU FDL tal y como es publicada por la fundacion de software libre; bajo la version 1.3 de la licencia, o una version superior. Leer la licencia GNU gpl para mas detalles.
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".