Divisor de voltaje y pull-up con analogRead
El Attiny tiene 6 pines que puedes usar como E/S.
Si bien 5 de ellos son realmente fáciles de usar, el Pin 1, el PIN de reinicio, obviamente reinicia el microcontrolador si el voltaje es inferior a alrededor de 2.5v.
Al reprogramar los fusibles para usar el pin de reinicio como un pin de E/S, ya no puedo usar el programador ISP de arduino.
Entonces, ¿la única forma de usarlo como entrada, sin reiniciar el MC, es permanecer por encima de 3v y usar analogRead?
Después de que finalmente obtuve eso, jugué un poco con mi multímetro (única herramienta de medición disponible) y experimenté con resistencias.
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 bien, como no quiero reprogramar los fusibles ni quemar el Attiny85 mi pregunta es:
¿Puedo dañar de alguna manera el attiny usando este circuito analogRead();
?
Las lecturas serían alrededor de 680 cuando se presiona o 1000 cuando no se presiona.
¿Debo usar otras resistencias para consumir menos corriente/enviar mucha corriente continuamente? ... si esto funciona...
¿Cualquier otra sugerencia?
Notas.:
Uso pines 2(PB3),3(PB4),5(PB0),6(PB1)
como canales PWM (con transistores npn); Rojo, verde, azul, blanco.
Pin usado 7(PB2)
como botón, pero también necesito un potenciómetro...
ENTONCES:
pin 7(PB2)
se convierte en potenciómetro (analogRead).
y yo espero
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 botón simple.
http://www.technoblogy.com/show?LSE
EDITAR
No probé el circuito de arriba. Te pregunto si podría funcionar, si hay algo mal. Tengo miedo de dañar el pasador.
Todo lo que sé es que:
si pongo los fusibles no puedo reprogramar el chip
pin1 = pb5 = adc0 = lectura analógica (A0) = Arduino pin5 = REINICIAR
Sí, puede usar el convertidor analógico a digital en el pin 1 incluso si el restablecimiento externo todavía está habilitado en ese pin, siempre que el voltaje en ese pin no caiga por debajo del umbral de reinicio.
Aquí hay una versión más simple de su circuito que funciona de manera confiable ...
simular este circuito : esquema creado con CircuitLab
...
Cuando se presiona el botón SW1, las resistencias R2 y R1 forman un divisor de voltaje que pone alrededor de 4,54 voltios en el pin RST.
Aquí hay un programa de prueba de Arduino que encenderá el LED integrado cada vez que se presione 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:
Un Trinket es básicamente un ATTINY85 que tiene un conector USB y un gestor de arranque precargado, por lo que es fácil introducir código usando el IDE de Arduino. Todo lo que se dice aquí sobre Trinket se aplica a un ATTINY85 desnudo y viceversa.
La hoja de datos del ATTINY85 especifica el voltaje mínimo en el pin de reinicio que se interpretará como "1" como 0,9 voltios * (V IH2 ), que resulta en 4,5 voltios . Dado que la salida de ~4,54 voltios por el divisor de voltaje es mayor que eso, debe verse como un "1" y no restablecer el chip.
Hay un pullup integrado de 30k-60k en el pin de reinicio, por lo que, en principio, solo podríamos usar, digamos, un R2 de 30k ohm y no necesitar R1, pero descubrí que puede obtener reinicios falsos al cambiar el ruido con solo el pullup interno .
Elegí resistencias de 10k y 1k ohm porque son comunes y proporcionan suficiente corriente para que funcionen de manera confiable, pero solo desperdician alrededor de 2 mA cuando se presiona el botón. Se usa muy poca corriente cuando no se presiona el botón.
Elegí 1000 como el valor de umbral en la lectura analógica porque da mucho margen en ambos lados para imprecisiones en los valores de las dos resistencias. Cuando no se presiona el botón, el pin de reinicio debe estar muy cerca de Vcc y, por lo tanto, analogRead () debe estar muy cerca de 1023. Cuando se presiona el botón, R2 reducirá el voltaje en el reinicio, pero exactamente cuánto más bajo depende en los valores exactos de R1 y R2 (el valor real de las resistencias puede ser bastante diferente de su valor de mercado debido a la tolerancia ) y el pull-up interno, por lo que elegí un valor más alto que solo el punto medio.
Golaž
coco
Golaž
coco
Golaž
coco
coco
Golaž
Golaž
coco
coco
coco
chris stratton
chris stratton
coco
coco
dontsov