8 votos

Utiliza el PIN de RESET del Attiny85 como entrada con divisor de tensión

Divisor de tensión y pull-up con analogRead

El Attiny tiene 6 pines que puedes utilizar como E/S.

Mientras que 5 de ellos son realmente fáciles de usar el Pin 1, el PIN de Reset , obviamente resetea el microcontrolador si el voltaje es inferior a unos 2,5v.

Al reprogramar los fusibles para usar el pin de reset como pin de E/S ya no puedo usar el programador ISP de arduino.

Así que la única manera de utilizarlo como entrada, sin reiniciar el MC, es permanecer por encima de 3v y usar analogRead?

Después de conseguirlo, jugué un poco con mi multímetro (única herramienta de medición disponible) y experimenté con las resistencias.

schematic

simular este circuito - Esquema creado con CircuitLab

The powersupply(battery) outputs around 5.11v.

not pressed i get 5.11v on the "reset pin".
pressed i get 3.41v on the "reset pin".

not pressed the resistace is 39K .
pressed the resistace is 19K .

Ahora, como no quiero reprogramar los fusibles ni quemar el Attiny85 mi pregunta es:

¿Puedo dañar de alguna manera la attiny utilizando este circuito con analogRead(); ?

Las lecturas estarían en torno a 680 cuando se pulsa o 1000 cuando no se pulsa.

¿Debo utilizar otras resistencias para consumir menos corriente/enviar mucha corriente continuamente? ...si esto funciona...

¿Alguna otra sugerencia?


Notas.:

enter image description here

Uso alfileres 2(PB3),3(PB4),5(PB0),6(PB1) como canales PWM (con transistores npn); Rojo, verde, azul, blanco.

Pasador usado 7(PB2) como botón.pero necesito también un Potenciómetro...

SO:

pin 7(PB2) se convierte en Potenciómetro (analógicoRead).

y, espero que

pin 1(PB5) se convierte en un botón usando analogRead o lo que sea.

EDITAR

este sitio explica más sobre el problema, aunque necesito un simple botón.

http://www.technoblogy.com/show?LSE

EDITAR

No he probado el circuito anterior. Te pregunto si podría funcionar, si hay algo mal. Tengo miedo de dañar la clavija.

Todo lo que sé es eso:

  1. se reinicia con baja tensión utilizando la configuración normal del potenciómetro o la configuración normal del botón

  2. si pongo los fusibles no soy capaz de reprogramar el chip

  3. pin1 = pb5 = adc0 = analogread(A0) = Arduino pin5 = RESET

13voto

chews Puntos 1507

Sí, puedes utilizar el convertidor analógico-digital en el pin 1 aunque el reset externo siga activado en ese pin siempre que la tensión en ese pin no caiga por debajo del umbral de reset.

Aquí tienes una versión más sencilla de tu circuito que funciona de forma fiable...

schematic

simular este circuito - Esquema creado con CircuitLab

...

Cuando se pulsa el botón SW1, las resistencias R2 y R1 forman un divisor de tensión que pone alrededor de 4,54 voltios en el pin RST.

Aquí hay un programa de prueba de Arduino que encenderá el LED de la placa cuando se pulse el botón...

int led = 1;    // Onboard led on trinket

setup() {
    pinMode( led, OUTPUT );
}

loop() {
    if (analogRead(0)) > 900 ) {   // reset pin is near Vcc
        digitalWrite( led , 0 );   // turn led off
    } else {                       // reset pin is less than 900/1024 * 5 vcc
        digitalWrite( led , 1 );   // turn led on
    }
}

Notas:

A Baratija es básicamente un ATTINY85 que tiene un conector USB y un cargador de arranque precargado, por lo que es fácil introducir código en él utilizando el IDE de Arduino. Todo lo que se dice aquí sobre el Trinket es válido para un ATTINY85 desnudo y viceversa.

La hoja de datos del ATTINY85 especifica que la tensión mínima en el pin de Reset que se interpretará como "1" es de 0,9 voltios * (V IH2 ), lo que se traduce en 4,5 voltios . Desde el ~4,54 voltios salida por el divisor de tensión de salida es más alta que eso, debe ser visto como un "1" y no reiniciar el chip.

enter image description here

Hay 30k-60k construido en pullup en el pin de restablecimiento, por lo que podría en principio sólo el uso, digamos, un 30k ohmios R2 y no necesita R1, pero he encontrado que usted puede conseguir restablecimientos espurios de ruido de conmutación con sólo el pullup interno.

Escogí resistencias de 10k y 1k ohmios porque son comunes y proporcionan suficiente corriente para trabajar de forma fiable, pero sólo gastan alrededor de 2mA cuando se pulsa el botón. Se utiliza muy poca corriente cuando no se pulsa el botón.

Elegí 1000 como valor de umbral en el analogRead porque da mucho margen en ambos lados para las inexactitudes en los valores de las dos resistencias. Cuando el botón no es presionado, el pin de reset debe estar muy cerca de Vcc y así el analogRead() debe estar muy cerca de 1023. Cuando el botón es presionado, el voltaje en el reset será bajado por R2, pero exactamente cuánto más bajo depende de los valores exactos de R1 y R2 (el valor real de las resistencias puede ser bastante diferente de su valor de mercado debido a tolerancia ) y el pull-up interno, así que elegí un valor más alto que el punto medio.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X