Professional Documents
Culture Documents
FUNDAMENTOS DE PROGRAMACIN DE
MICROCONTROLADORES
I. MARCO TERICO
II. DESARROLLO ACTIVIDAD DE CONSULTA
Las variables analgicas requieren una transformacin a 1. Investigar cmo es la secuencia de configuracin del
digital para ser tratadas. conversor ADC del microcontrolador utilizado. Identificar
Cada valor de la seal tiene que estar representada los registros y las funciones de los bits a utilizar.
por un cdigo diferente
Conversin Analgico-Digital (A/D) Un microcontrolador solo entiende seales digitales (1s y
0s), La tarjeta Arduino utiliza un conversor A/D de 10-bits,
Convertidor ADC as que: Resolucin = Vref/1024 Mapear los valores de
Un conversor analgico-digital es un dispositivo electrnico voltaje de entrada, entre 0 y Vref, a valores enteros
capaz de convertir una seal analgica en un valor binario, en comprendidos entre 0 y 1023 (2^n-1). Con otras palabras,
otras palabras, ste se encarga de transformar seales esto quiere decir que nuestros sensores analgicos estn
analgicas a digitales (0 y 1). Los convertidores A/D son caracterizados con un valor comprendido entre 0 y 1023. [2]
dispositivos electrnicos que establecen una relacin
biunvoca entre el valor de la seal en su entrada y la palabra Los registros de puertos permiten una manipulacin de menor
digital obtenida en su salida. La relacin se establece en la nivel y ms rpida de los pines de entrada / salida del
mayora de los casos, con la ayuda de una tensin de microcontrolador en una placa Arduino. Los chips utilizados
referencia. en la placa Arduino (ATmega8 y ATmega168) tienen tres
El dispositivo establece una relacin entre su entrada (seal puertos:
analgica) y su salida (digital) dependiendo de su resolucin.
La resolucin determina la precisin con la que se reproduce B (pin digital 8 a 13)
la seal original. C (clavijas de entrada analgicas)
Un cdigo de entrada es transformado en una tensin o D (pines numricos 0 a 7)
corriente determinada
Correspondencia entre 2^n cdigos de entrada y 2^n Cada puerto est controlado por tres registros, que tambin
tensiones discretas de salida, a partir de una son variables definidas en el lenguaje arduino. El registro
referencia de tensin [1] DDR, determina si el pin es un INPUT u OUTPUT. El
registro PORT controla si el pin es HIGH o LOW, y el registro
Tipos de convertidores A/D PIN lee el estado de los pins INPUT establecidos para la
entrada con pinMode (). Los registros DDR y PORT se
pueden escribir y leer. Los registros PIN corresponden al
estado de las entradas y slo se pueden leer.
entrada).
2
III. DIAGRAMA ELECTRNICO DEL MONTAJE los pines como salida podemos alternar el envo de
informacin que en este caso se expresa como el encendido y
apagado continuo del LED.
int a=0;
int b=0;
void setup() {
// put your setup code here, to run once:
Serial.begin (9600);
DDRD=4;
PORTD=8;
}
void loop() {
// put your main code here, to run repeatedly:
b=(PIND&8);
if((b==0)&&(b!=a)){
void setup() {
delay(20);
// put your setup code here, to run once:
PIND=4;
DDRD=4;
}
}
Serial.println(b);
a=b;
void loop() {
}
// put your main code here, to run repeatedly:
PIND |=4;
Este cdigo lo que hace es en primer lugar declarar dos
delay (500);
variables de tipo entero, seguido a esto se declara el DDRD en
}
4 porque corresponde al bit 2, y 2^2 es 4 en dicho bit se
conect la salida que corresponde al LED y se lee el PORTD
Se construy un algoritmo que permitiera el parpadeo en la posicin ocho esto debido a que en esta posicin se
continuo de un led, el cual se conect al pin 2 correspondiente encuentra el pulsador que nos dar el estado de 1 o 0. Luego
al bit 2 del puerto D, teniendo en cuenta esto se utiliz la dentro del ciclo infinito lo que se realiza es leer el puerto D
instruccin DDRD igual a 4 puesto que 2^2 es 4, en el ciclo en la posicin tres que como fue mencionado antes
infinito se emple una compuerta or con el fin de que enviara corresponde a la entrada de valores que nos dir si esta en
voltaje a este pin cada 500 ms. qu fue lo declarado en el alto o en bajo y dentro de un if se realiza una comparacin de
delay. que si este es igual a cero y es diferente al valor anterior,
El uso de PIND fue fundamental para el desarrollo de este escribir en el PIND la salida que lo que har es:
proceso adems de posibilitarnos disminuir el nmero de Si se encuentra en alto ejecutar otro ciclo infinito que
instrucciones, puesto que al permitirnos activar o desactivar encender el led debido a que el pulsador gnero el
4
estado en alto, hasta que dicho estado alto pase a // put your setup code here, to run once:
estado bajo nuevamente al abrir el circuito, momento DDRD=4;
en que se sale del ciclo. PORTD=8;
Si no se cumplen las condiciones anteriores no se }
enciende ningn led.
En la construccin de este algoritmo fue necesario entender void loop() {
cmo leer un estado en tiempo real Posicin del interruptor y // put your main code here, to run repeatedly:
emitir una accin, Encendido o apagado del LED, adems de poten=analogRead(A0);
configurarlo de tal manera que el estado del led no cambiara PIND |=8;
apenas se soltaba el pulsador, para ello se compararon los delay(pot);
estados de manera continua. }
REFERENCIAS
[1] Malpica, N., Borromeo, S. and Vaquero, J. (n.d.). Conversin A/D - D/A.
[online] Universidad Rey Juan Carlos. Available at:
http://www.cartagena99.com/recursos/electronica/apuntes/Electronica_conversio
n_AD_DA.pdf [Accessed 19 Aug. 2017].
[2]"Conversor Analgico-Digital (A/D)", Arduino Playground. [Online].
Available:
https://playground.arduino.cc/ArduinoNotebookTraduccion/Appendix6.
[Accessed: 20- Aug- 2017].
[3]A. Garca and I. Perez, "Sistemas basados en microprocesador". [Online].
Available: http://riubu.ubu.es/bitstream/10259/3562/1/P%C3%A9rez-Garc
%C3%ADa.pdf. [Accessed: 20- Aug- 2017].
[4] ATMEL 8-BIT MICROCONTROLLER WITH 4/8/16/32KBYTESIN-
SYSTEM PROGRAMMABLE FLASH DATASHEET at
http://www.atmel.com/images/Atmel-8271-8-bit-AVR-Microcontroller-
ATmega48A-48PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf
int poten=0;
void setup() {