Spannungsteiler & Pull-up mit analogRead
Der Attiny hat 6 Pins, die Sie als E / A verwenden können.
Während 5 von ihnen wirklich einfach zu verwenden sind, setzt der Pin 1, der Reset-PIN, offensichtlich den Mikrocontroller zurück, wenn die Spannung niedriger als etwa 2,5 V ist.
Durch die Neuprogrammierung der Sicherungen, um den Reset-Pin als E / A-Pin zu verwenden, kann ich den Arduino ISP-Programmierer nicht mehr verwenden.
Die einzige Möglichkeit, es als Eingang zu verwenden, ohne den MC zurückzusetzen, besteht darin, über 3 V zu bleiben und analogRead zu verwenden?
Nachdem ich das endlich hinbekommen habe, habe ich ein wenig mit meinem Multimeter herumgespielt (nur Messwerkzeug vorhanden) und mit Widerständen experimentiert.
Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan
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 Ω.
Da ich die Sicherungen nicht neu programmieren oder den Attiny85 verbrennen möchte, lautet meine Frage:
Kann ich die Attiny mit dieser Schaltung irgendwie beschädigen analogRead();
?
Die Messwerte wären etwa 680, wenn sie gedrückt werden, oder 1000, wenn sie nicht gedrückt werden.
Sollte ich andere Widerstände verwenden, um weniger Strom zu verbrauchen / kontinuierlich zu viel Strom zu senden? ... wenn das geht...
Irgendwelche anderen Vorschläge?
Anmerkungen.:
Ich verwende Pins 2(PB3),3(PB4),5(PB0),6(PB1)
als PWM-Kanäle (mit npn-Transistoren); Rot, Grün, Blau, Weiß.
Benutzter Stift 7(PB2)
als Knopf. Aber ich brauche auch ein Potentiometer ...
SO:
Pin 7(PB2)
wird Potentiometer (analogRead).
und ich hoffe
Pin 1(PB5)
wird zu einer Schaltfläche mit analogRead oder was auch immer.
BEARBEITEN
Diese Seite erklärt mehr über das Problem, obwohl ich eine einfache Schaltfläche benötige.
http://www.technoblogy.com/show?LSE
BEARBEITEN
Ich habe die Schaltung oben nicht getestet. Ich frage Sie, ob es funktionieren könnte, wenn etwas nicht stimmt. Ich habe Angst, den Stift zu beschädigen.
Alles was ich weiß ist das:
Wenn ich die Sicherungen setze, kann ich den Chip nicht neu programmieren
pin1 = pb5 = adc0 = analogread (A0) = Arduino pin5 = RESET
Ja, Sie können den Analog-Digital-Wandler an Pin 1 verwenden, auch wenn der externe Reset an diesem Pin noch aktiviert ist, solange die Spannung an diesem Pin nicht unter die Reset-Schwelle fällt.
Hier ist eine einfachere Version Ihrer Schaltung, die zuverlässig funktioniert ...
Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan
...
Wenn die Taste SW1 gedrückt wird, bilden die Widerstände R2 und R1 einen Spannungsteiler, der etwa 4,54 Volt an Pin RST anlegt.
Hier ist ein Arduino-Testprogramm, das die integrierte LED zum Leuchten bringt, wenn die Taste gedrückt wird ...
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
}
}
Anmerkungen:
Ein Trinket ist im Grunde nur ein ATTINY85 mit einem USB-Anschluss und einem vorinstallierten Bootloader, sodass es einfach ist, Code mit der Arduino IDE hineinzulesen. Alles, was hier über das Trinket gesagt wurde, gilt für einen nackten ATTINY85 und umgekehrt.
Das Datenblatt für den ATTINY85 gibt die Mindestspannung am Reset-Pin an, die als "1" als 0,9 Volt * (V IH2 ) interpretiert wird, was 4,5 Volt entspricht . Da der Ausgang des Spannungsteilers von ~ 4,54 Volt höher ist, sollte er als "1" angesehen und der Chip nicht zurückgesetzt werden.
Am Reset-Pin ist ein Pullup von 30k-60k eingebaut, sodass wir im Prinzip nur einen 30k-Ohm-R2 verwenden könnten und R1 nicht benötigen, aber ich habe festgestellt, dass Sie durch Schaltgeräusche nur mit dem internen Pullup falsche Resets erhalten können .
Ich habe 10k- und 1k-Ohm-Widerstände ausgewählt, weil sie üblich sind und genügend Strom liefern, zuverlässig funktionieren, aber nur etwa 2 mA verschwenden , wenn der Knopf gedrückt wird. Es wird sehr wenig Strom verbraucht, wenn die Taste nicht gedrückt wird.
Ich habe 1000 als Schwellenwert für den analogRead gewählt, weil er auf beiden Seiten viel Spielraum für Ungenauigkeiten in den Werten der beiden Widerstände bietet. Wenn die Taste nicht gedrückt wird, sollte der Reset-Pin sehr nahe an Vcc liegen und daher sollte analogRead() sehr nahe an 1023 liegen. Wenn die Taste gedrückt wird, wird die Spannung beim Zurücksetzen von R2 nach unten gezogen, aber wie viel niedriger, hängt davon ab auf den genauen Werten von R1 und R2 (der tatsächliche Wert der Widerstände kann aufgrund der Toleranz stark von ihrem Marktwert abweichen ) und dem internen Pull-up, daher habe ich einen höheren Wert als nur den Mittelpunkt ausgewählt.
Golaž
cocco
Golaž
cocco
Golaž
cocco
cocco
Golaž
Golaž
cocco
cocco
cocco
Chris Stratton
Chris Stratton
cocco
cocco
dontsov