TERMOMETRO@AVR

prime_termoComo primer circuito con los microcontroladores AVR, se presenta en esta ocasion un termometro  basado en el ATmega48 de ATMEL. Este uC posee 4Kb de Flash, un oscilador inteno de hasta 10Mhz, 6 ADCs, 23 pines I/O y mas.

Este circuito presenta en tres displays de 7 segmantos la temperatura, en dos muestra las decenas y unidades , y en el tercer display muestra el simbolo C que representa la escala de medicion CELSIUS. El cerebro de este 02012006171termometro  es el ATmega48 que lee la salida analoga de un sensor de temperatura, esta lectura es procesada y desplegada en los displays (XXC) , ademas el uC  detecta si la temperatura sensada es mayor a un valor preestablecido activando una salida digital y haciendo sonar un Beep en un buzzer. El circuito funciona con 5Vdc con un consumo alrededor de los 400mA, los que bien pueden conseguirse por medio de una bateria de 9v y un regulador 78l05.

Como se menciono el termometro toma la temperatura ambiente por medio de un sensor, cuyo numero es LM35, el cual es un sensor de tres terminales,Vcc, Vout y Gnd, este sensor provee en su salida 10mV por 1 lm35cktgrado Celsius, osea, para una temperatura de 30ºC la salida del sensor entrega un voltaje de 300mVdc. Es esta salida la que se conecta a la entrada de un canal ADC del ATmega48, el cual se programa para tomar la lectura en milivoltios y transformarla a su representacion digital y mostrar la temperatura en tres display (decenas-unidades-letra); ademas el programa activa una alarma (led y buzzer) cuando la03012006219 temperatura sobrepasa un limite previamente establecido. El desempeño del circuito ha resultado satisfactorio, la temperatura mostrara es la correcta y activa el aviso (beep beep beep) al momento de aumentar sobre  el limite. Ver video al final de la nota.

El programa de control a sido escrito en lenguaje BASIC y se ha desarrollado utilizando el IDE BASCOM AVR.  Para detalles acerca del programa, pueden descargar el codigo original en .BAS dentro del .ZIP del enlance disponible en el BOX la barra lateral izquierda. El esquema electronico del hardware usado se muestra a continuacion.

Diagrama del Termometro ATmega48

Diagrama del Termometro ATmega48

La construccion del circuito es sencilla ya que son pocos elemnetos y disponibles en cualquier comercio de componentes electronicos. para el montaje se utilizan:
El tipo de display dependera de la version del programa que se descargue.

  • Microcontrolador ATMEGA48  (se puede utilizar tambien ATMEGA8 o ATMEGA88)
  • Un display AC/CC de tres digitos (o tres display AC/CC de un digito cada uno)
  • Un sensor LM35dz
  • 9 resistores de 330×1/4w
  • Dos leds (rojo y verde)
  • Un buzzer
  • Un LM78l05
  • Bateria de 9v

He aqui unas images de un proyecto basado en este diseño:

 

 

 

 

Si tienen dudas o consultas, por favor comenten ¡

73 respuestas

  1. Boa noite,
    você tem o código em C para o projeto?
    Obrigado

  2. OYE DISCULPA
    TU PROYECTO ESTA MUY BUENO, PERO NO SE SI ME PUEDAS HACER EL FAVOR DE PASARME EL CODIGO PARA PROGRMARLO YA QUE YO O INTENTE PERO AUN NO ME QUEDA Y NO ENCUENTRO ERRORES TE AGRADECERIA SI ME LO PUEDES ENVIAR

    • Hola David.
      Gracias por tu comentario. El programa ha grabas en el Micro, dependera del tipo de display usado, es decir Anodo o Catodo Comun.
      El programa para AC se encuetra en el BOX latera, bajo el nombre de TERMO_AVR_AC.
      y el progrma si usa dislay CC es el llamado TERMO_AVR48.

      No dudes en consultar.

  3. Muy buen proyecto
    Lamentablemente intente configurar el codigo para un ATmega8535
    y no funciona como en las fotos 😦

    • Gracias por tu comentario.
      Con respecto a tu inquieted, si puedes me envias el codigo para echarle un vistazo y ver de que manera lo hacemos funcionar.
      En teoria solo debes cambiar una linea del programa, $REGFILE = «M8535DEF.DAT» y realizar las conecciones de los puertos como corresponde.

  4. Oyemuy buenotupruyecto, lodescarguey nolo puedo introducir enla memoria me marca errores el rpograma, tal vez sea por que uso visual basic , me podrias pasar el software con el cual lo puedo pasar o si es solo basic , me marca error en
    $regfile «m48def.dat»
    $crystal 8000000
    y en los puertos

    te lo agradecere bastante es para la escuela

    • Hola Jose y gracias por tu comentario.
      El listado de programa que descargaste esta en lenguaje BASIC y debe ser compilado con el IDE BASCOM-AVR, un compilador para microcontroladores AVR. Las lineas que te dan error es porque estas son directivas para el BACOM donde se le dice que micro se usara y a que velocidad correra.
      Luego para introducirlo a la Flash del micro se hace por medio de un hardware programador, en este blog se describe uno.

  5. Hola, interesante tu proyecto , pero no puedo ubicar el codigo del programa para poder revisarlo y probarlo.
    espero puedas ayudarme y mandarme el programa al correo . o decirme exactamente odnde esta. ya uqe en la barra lateral izquierda no encuentro nada parecido a lo que indicas.
    SIge con esos proyectos y muchos existos en los nuevos
    saludos

    • Hola Kike.
      Con respecto a tu solicitud, los codigos tanto para display Ac o CC, estan en el BOX de la barra izquierda, en azul.
      De todos modos te envio a tu correo el codigo fuente.
      Saludos.

  6. […] El programa de control ha sido escrito en lenguaje BASIC y se ha desarrollado utilizando el IDE BASCOM AVR. […]

  7. Muy Buen aporte!

  8. Muy bueno el proyecto..pero quisiera saber si me podrias enviar la codificacion del atmega xq yo estoy realizando algo parecido pero nose en q estoy fallando…ademas el codigo q tengo no es exactamente mio… asi q me es dificil entenderlo…ya que tmb soy principiante en esto…. A ver si me lo envias a mi correo… y como esta desarrollado en el bascom pues mejor pues es el programa q toy utilizando…
    mi correo es edu.0501@hotmail.com

    • Hola Eduardo.
      Con respecto a tu solicitud, los codigos tanto para display Ac o CC, estan en el BOX de la barra izquierda, en azul.
      De todos modos te envio a tu correo el codigo fuente.
      Saludos.

  9. oye un favor me prodrias pasar la codificacion es que la he modificado varias veces pero no funciona

    • Hola Victor.
      Con respecto a tu solicitud, depende de que circuito hayas armado, con display de Catodo Comun o de Anodo Comun.
      los codigos tanto para display Ac o CC, estan en el BOX de la barra izquierda, en azul.
      De todos modos te envio a tu correo el codigo fuente.
      Saludos.

  10. Hola, esta muy bueno tu proyecto, yo soy novato en la programacion y estoy realizando algo parecido solo que tengo que enviar los datos de temperatura al computador…
    Me puedes ayudar con la programacion del micro para enviar los datos al pc… Que instruccion debo usar…
    Tengo entendido que hay que especificar los baudio, paridad, etc….
    Estoy usando el atmega8, el max232 y la comunicacion por el puerto serial db9
    Puedes ayudarme por favor…

  11. Hola, gracias por la informacion la verdad las paginas estan muy utiles e interesantes…. Si tengo algun problema, ya estare por aqui nuevamente molestandote…
    Saludos

  12. Excelente montaje, aunque yo siempre programo con los PIC he visto que ultimamente se utiliza mucho los micro Atmega, por que crees tu que sea esto.?
    saludos

    • Estimado amigo, saludos.
      Yo tambien me einvolucre en los micros usando el PIC, mas sin embargo he encontrado en los AVR algunas ventajas.
      Mi post mas reciente habla de esto.

  13. como hago para acceder a tu post, gracias por tu comentario

  14. Hola muy inteeante tu proyecto, yo tengo muy poco experiencia en la programacon y quiero utilizar el ADC del ATmega8 pero no he podido hecharlo andar, programo en ensamblador, si pudieras ayudarme de verdad te lo agardeceria mucho. creo que alguna instrccion me ha de star fallando. Gracias por tus atenciones y por compatir tus conocimientos

    • Hola Alejandro.
      Gracias por tu comentario….con respectoa tu consulta, desde mi punto de vista , para comenzar en los AVR y especificamente con ADC, es mejor tratarlo con el BASCOMavr y luego das el salto a Ensamblador o mejor a un a C. Esto debido a que el Bascom es superfacil usar el ADC.

  15. Muy interesante el proyecto, ahora me viene a la cabeza montarlo pero en Lenguaje C, sabes si algun compilador me lleva tu codigo a C?…saludos

    • Hola Carlos. Gracias por tu comentario.
      Respecto a tu interrogante, pues un compilador de Basic a C, entiendo que no hay. Lo que se puede hacer es reescribirlo a lenguaje C, basendoce en Basic.
      Saludos…y adelante ¡

  16. quisiera saber si tienen el algoritmo de este termometro, y si lo pueden subir para poder descargarlo de ante mano muchas gracias.

    • Hola Fhernando, gracias por comentar.
      Fijate que el algoritmo es tan facil como….me imagino que en clase ya les han de haber explicado, puede ser que no llegaras a esa clase y te perdiste la explicacion.
      Saludos.

  17. hola brother cuando quiero descargar el codigo en el box me aparece error y no lo descarga ……..un favor ps me puedes enviar el codigo a mi correo yako113@gotmail.com.
    gracias men

    • Hola Yak0 y gracias por tu comentario….se ha revisado el enlace del BOX y funciona normalmente, por favor intenta de nuevo.
      Saludos.

  18. Hola que tal. Me gustaria me dijeras cual fue tu logica para mostrar en los displays el valor de las temperaturas. Ya que estas metiendo la señal del LM35 directamente por ejemplo para 31 ºC esta dando 310 mV. Entonces como tu voltaje de referencia es 5 voltios, el valor de una cuenta seria = 0.0196 mV x bit. Ahora si tienes 310 mV, te esta dando 15.3 en binario que seria 00001111. Que logica usas para ese valor mostrarlo en los displays?

    • Hola Jaime. Gracias por tu comentario.

      Tus conversiones estan corectas, lo que sucede es que se esta utilizando el ADC con una resolucion de 10 Bits, por lo tanto cada cuenta o bit representa : 5v / 1024 bits = 0.0049 v/bit.
      Por lo tanto si el sensor detecta 31º da una salida de 310 mV…estos entran al ADC y se convierten en 63 osea 00111111…este numero se divere entre 2 y se obtiene un aproximado de la teperatura del sensor 63/2 = 31…este 31 se parte en 3 y 1 y se envian usando multiplexacion a los displays.

      A tu dispocision¡

  19. que tal amigo me puedes ayudar con el manejo del adc del atmega 8, tengo una entrada q varia de 0.06v hasta 2.55v de un sensor ultrasonico, necesito decirle al micro que si el sensor detecta valores entre 0.06v y 0.21v se encienda un led caso contrario se apague me puedes ayudar con eso por fa, una cosa mas para que sirven las entradas avcc y ref del micro

    saludos
    H. R.
    fatzero_1@hotmail.com

    • HOla guille ¡

      pues tu consulta es realtivamente sencilla.
      debes de conectar la salida de tu sensor a una entrada analogica, adc, por ejemplo el pin 23, PC0, ADC0.

      El ADC del micro transforma esos valores analogos del sensor en valores digitales en memoria, eso con la instruccion variable = GETADC (0)

      en la variable quedaran valores digitales que representaran los valores analogos externos, siguiendo la regla:
      5 voltios analogicos —-> 1023 valor digital
      0 voltios analogicos —-> 0 valor digital

      por lo tanto

      0.061 voltios —> 12
      0.21 voltios —-> 43

      entonces para encender un led conectado al portb.0 cuando el valor de sensor este entre 0.061 y 0.21 :

      lectura = getadc(0)
      if lectura >12 and lectura <43 then portb.0=1

      att. oolores

  20. Hola.
    Estoy intentando armar el proyecto que posteaste pero el problema que tengo es quemar el ATmega48
    Quisiera me sugirieras algun programador para armarlo
    y quemar el codigo fuente que posteas en el atemga48
    Gracias.

    • HOla Nael ¡
      Para quemar (trasferier el progrma hacia la memoria del micro) pues utilizar el programador propuesto en https://microcontroladores2utec.wordpress.com/2010/09/08/nuevo-programador-stk200-avr/

      tambien esta el mas sencillo http://www.cygan.com/avr/beginning/sample.html

      espero te ayude ¡¡

      • Gracias por responder me parecen muy interesantes los programadores que me posteas, el segundo ( mas sencillo) corre el riesgo que el atmega pueda sufir algun daño al programarlo ?

        Entiendo que con cualquiera de los dos necesito el software BASCOM AVR para compilar el codigo fuente que posteas, pero que software ocupo para quemar el atemga, puedo utlizar el ponyprog200 ?

        tambien encontre un programador USB en el siguiente link http://www.fischl.de/usbasp/
        descarque el siguiente .rar usbasp.2006-12-29.tar.gz (118 kB) Supports programmers with ATMega48 and ATMega8

        Me gustaria saber tu opinion si puedo programar el atemga con este programador. o si me puedes sugerir uno mejor o mas sencillo pero por puerto USB o serial,
        Te lo agradeceria mucho.

        Gracias… espero me puedas ayudar

  21. nAEL…cualquiera de los programadores te ayudara.

    ..con el BASCOM compilas el programa y tambien Programas el chip…..no es necesario otro software.

    te recomiendo leas el documento : https://microcontroladores2utec.files.wordpress.com/2010/09/practica0_bascom.pdf

    saludos. ¡

  22. Hola.. he intentado programar el atmega48 con los programadores que me sugeriste pero ninguno me funciona
    me marca errores.

    en la pestalla de
    LOCK AND FUSE BITS
    marca el error de
    READLB entry not found

    ———————–
    cuando presiono el boton
    para que reconosca el atmega
    me marca el error

    Could not identify chip
    with ID: 1E920A

    —————————
    Cunado trato de escribir

    en el chip solo aparece la
    ventana de
    Writing ROM
    pero la barra de proceso no
    avanza.

    No se que mas hacer he probado
    con el pronyprog
    y de igual manera el chip
    no me lo reconoce
    me marca unknow dive (-24)
    he leido en un foro que se debe
    porque no he alimentado el chip
    pero ya alimente los pines
    AVCC y Vcc aterrice GND
    y aun asi no me identifica el chip
    El puerto paralelo con ponyprog
    si lo reconoce.

    Te agradeceria me ayudaras.

    El ultimo programador que probe fue el que te mando en la siguiente liga http://elm-chan.org/works/avrx/stk.png

  23. Hola necesito tu ayuda, ya he armado el termometro y me funciono perfecto, pero quiero leer la salida del display para la PC, tiene alguna idea que me puedas dar para que lo pueda hacer gracias.

  24. Hola que tal, me gusta este proyecto. Soy un estudiante de electrónica que recién se involucra en el mundo de los microprocesadores…y bueno tengo una duda con respecto al código. Tendré algún problema al modificarlo y ejecutarlo para Code Vision AVR.???? Y me gustaria que proporciones el codigo por favor…

    Gracias, buen dia

    • HOla Jimmy.
      Pues te comento que el programa de este proyecto esta escrito para ser compilado usando BASCOM_AVR, por lo tanto si lo quieres compilar con el CodeVision se tendra que escribir utilizando lenguaje C.
      La verdad la logica es la misma solo tendrias que re-escribirlo usando el lenguaje C.

      Saludos.

  25. […] Proyecto: TERMOMETRO AVR Atmega 8/48/88 […]

  26. Hola … Me gustaria me apoyaras que linea de codigo puedo añadir para comunicarlo por el puerto serial… he visto varios ejemplos pero no logro entenderlos del todo gracias

  27. Me alegra haver podido terminar el termometro de forma impresa, tuvo sus inconvenientes pero se termino, ese diseño se puede mejorar osea hacerlo de or mas compcta ya que ese diseño es con una tableta de 10×15 cm… Gracias Ing. Otto

  28. profe tengo una duda, yo arme el termometro pero no entiendo porq cuando aplico calor al termometro la temperatura desciende y si lo someto a una temperatura fria la temperatura tiende a aumentar.

    solamente eso gracias

    • Hola, gracias por tu comentario.
      Lo que comentas mas parece error de software, ya que aunque lo primero que se cree es que el sensor esta al reves, verdad?, pero no, si un sensor lm35 se conecta al reves se quema.
      Otra razon puede ser que las conexiones de los pines 22,21 y 20 esten incorrectas,, revisalas.
      Sino, revisa si el codigo esta bien escrito.

      Saludos

  29. ola amigo la verdad esta muy interesante tu proyecto y queria saber si no se puede pasar el archivo a hexadecimal por que yo tengo otro programador para atmel con el que le cargo los programas alos micros pero los archivos deben de estar en hexadecimal, ojala y si me puedas ayudar por que si quisiera hacer tu proyecto, gracias, si pudieras ojala y me lo puedas mandar a mi correo samael_palacios@hotmail.com, de antemano gracias

  30. Que tal amigo, primero dejame agradecerte por ayudar tanto publicando tus proyector y ofrecer soporte tecnico para llevarlos acabo. Tengo un problema con este proyecto del termometro que espero que puedas ayudarme, yo usaba un atmega48 pero se quemo y fui a comprar otro y me dijeron que estaba descontinuado que solo existe el atmega88 y lo quise programar y no funciono nada quisiera saber si pudieses ayudarme decirme si hay algun tipo de correccion que se haga al programa lo unico que le modifique fue donde decia m48def.dat por m88def.dat hay algo mas que corregir? y la otra pregunta seria pudieses ayudarme a crear el programa en C por que para mi es mas sencillo programar en C y asi pudiera facilitarme a mi encontrar la solucion a algun problema. De antemano muchas gracias y buen dia.

    • HOla Jorge.
      Gracias por tu comentario y apoyo.

      1.Respecto al Atmega48, no es que este descontinuado, simplemente quizas no lo tenian en la tienda…..pero igual, el proyecto debe funcionar con ATMEGA88….y si, solo es necesario el cambio de linea que mencionas.
      En lo que hay que tener cuidado es utilizar la linea correcta para cada micro, ya que aun ATMEGA88 hay dos versiones, verifica que numero es el tuyo, asi:
      ATMEGA88 —-> $regfile = «m88def.dat»
      ATMEGA88P —-> $regfile = «m88pdef.dat»
      ATMEGA88PA —-> $regfile = «m88pdef.dat»

      recuerda compilarlo con Bascom-AVR.

      2.Con respecto a la programacion en C, trabajaremos en un proyecto en C mas adelante, por el momento te recomiendo le des un vistazo a : http://extremeelectronics.co.in/avr-tutorials/interfacing-temperature-sensor-lm35/

      Saludos.
      Si tienes dudas, no dudes en consultar ¡
      ciao

  31. Buenas el link enviado para poder descargar no funciona =S creen que me podrian proporcionar el link o el nombre del documento para poder ver la programacion del mismo ??

    Gracias

    • Hola Jose.
      Pues , he probado descargarlo y si funciona. Intenta de nuevo.
      En el BOX azul del lado izquierdo, busca TERMO_AVR48.zip ….para la version CC…………………..o TERMO_AVR_CC.zip…para la version AC.

      Saludos.

  32. HOLA
    LO E INTENTADO COMPILAR CON EL MICRO BASIC PERO ME MARCA ERRORES EL OTRO PORGRAMA NO SEW UTILIZARLO NO SE SI ME PUEDAS AYUDAR DE ANTEMANO MUCHAS GRACIAS EXELENTE APORTE

  33. Solo puedo decir que esta genial el proyecto, ya lo alambre y funciona excelente. Gracias!!!!

  34. Podrias decirme por favor el valor del condensador C3 conectado al pin 21 del ATmega..? Gracias de antemano…!!

    • Hola, gracias por tu comentario.
      El valor de este capacitor C3, no es critico, puede ser 0.1uF o 0.01uF ceramico, cualquier voltaje.

      Saludos

  35. Hola, se me hizo muy interesante este proyecto, quiero mencionar que use el IDE BASCOM IVR del lenguaje de programación que nos mandas, lo compile en hexadecimal (.hex) para poder usar mi programador. Mi única duda es que use el lenguaje para ánodo común y el display marca el mismo numero, quiero decir marca -33- y cuando aumenta marca -44- luego -55- y así sucesivamente, no se si este mal la programación por que ya revise el alambrado y esta bien, de antemano gracias y mando un saludo para toda la comunidad.

  36. Me agrada mucho tu proyecto, solo encuentro un detalle, en el pin 21 del ATMEGA veo que tiene un capacitor (c3) pero no especificas de cuantos faradios =/ quiero hacer este circuito y estudiandolo me tope con ello, te agradeceria me pudieras auxiliar, gracias!!!

  37. Hola excelente el proyecto, pero tengo un problema, no encuentro el archivo que contiene la programacion, os agradeceria mucho, si pudiesen enviar a mi mail, la programacion para los displays de catodo comun:
    jose_chavez_94@hotmail.com
    Gracias por su atencion.

    • Hola. dentro del post dice

      «pueden descargar el codigo original en .BAS dentro del .ZIP del enlance disponible en el BOX la barra lateral izquierda. »

      Saludos

Replica a otonielflores Cancelar la respuesta