Hallo Experten ich beabsichtige meinen Katzen ein kleines Spielzeug zu basteln. Das soll einfach für wenige Minuten laufen, und dann wieder für Stunden nichts machen. Als Bauteile sollen der Motor eines (ehemaliges) RC-Spielzeug´s, ein ATTiny45 PU (welchen ich hier noch liegen habe) und zur Spannungsversorgung 2 Mignon-Zellen (oder Micro) zur Verwendung kommen. Oder sind 3 Akku's à 1,2V sinnvoller? Der ATTiny45 sollte ja mit einer Spannung von 3V bzw. 3,6V funktionieren. Mein Plan für das Programm ist, einfach den Ausgang setzen, per delay() Befehl 3 Minuten gesetzt lassen und dann ausschalten und wieder per delay() ensprechnede Anzahl Stunden warten, bis wieder für 3 Minuten eingeschaltet wird usw.... (also 3 Minuten laufen, 2 Stunden und 57 Minuten aus, wieder 3 Minuten an und 4 Stunden und 57 Minuten aus. Das dann über 24 Stunden so aufgeteilt) Der Motor nimmt bei einer Spannung von ca. 1,5V einen Strom von ca. 50mA auf. Ich habe vor, diesen mit analogWrite() anzusteuern. Jetzt habe ich 2 Fragen: 1. Welchen Transistor sollte ich dafür nehmen und wie muß dieser beschaltet werden? 2. Ist der Stromverbrauch des ATTiny während delay() so gering, das das ganze eventuell ein paar Tage mit einem Satz Batterien/Akku's läuft? Vielen Dank schonmal für lesen ;-)
Einfache Zeitschaltuhr aus dem Baumarkt mit Steckernetzteil. Alles andere wäre für die Katz:-)
Dirk schrieb: > wieder per > delay() ensprechnede Anzahl Stunden warten Das verbraucht relativ viel Strom im Prozessor. Besser ist eine RTC (gibt es auch integriert in einigen µC inklusive AVR). Damit lässt sich der µC tief schlafen legen, was statt mA nur ein paar µA verbraucht. Alternative: Bluetooth-Low-Energy Modul mit integriertem µC, z.B: https://www.sparkfun.com/products/13990 Ist zwar nicht AVR, aber damit könnte man das Spielzeug übers Smartfon auch steuern. Der käme mit der Spannung aus 2 AA Zellen sogar besser klar als der Tiny.
Zwei Einweg Batterien haben zusammen 1,8 bis 3,2 Volt. Wobei die Spannung unter Last zum Ende hin noch weiter absinken wird, wegen dem erhöhten Innenwiderstand der Batterie. Für deine Anwendung eignen sich drei Batterien oder Akkus besser.
Hi zusammen Ich bedanke mich erstmal für Eure konstruktiven Hinweise. Jim M. schrieb: > Besser ist eine RTC (gibt es auch integriert in einigen µC inklusive > AVR). Damit lässt sich der µC tief schlafen legen, was statt mA nur ein > paar µA verbraucht. Ich habe mal ein bißchen gegoogelt-leider bin ich nicht fündig geworden. Hättest Du da einen Tip? Kann man einen solchen auch mit dem Arduino UNO als ISP beschreiben? So habe ich das nämlich mit dem ATTiny bisher gemacht. Bluetooth fällt leider aus, da das Spielzeug ja tagsüber angehen soll wenn ich nicht zu Hause bin. Stefan U. schrieb: > Für deine Anwendung eignen sich drei Batterien oder Akkus besser. Ja ich glaube auch, das das besser ist ein bißchen Reserve zu haben. Gruß Dirk
Hat denn noch jemand eine Idee bzgl. des Transistor?
Wenn du 3V oder mehr Versorgungsspannung hast, kannst du handelsübliche Logic-Level MOSFET Transistoren verwenden. Viele davon können bei 3V schon mehrere Ampere schalten.
Stefan U. schrieb: > Wenn du 3V oder mehr Versorgungsspannung hast, kannst du > handelsübliche > Logic-Level MOSFET Transistoren verwenden. Viele davon können bei 3V > schon mehrere Ampere schalten. Was wäre denn der Vorteil eines Logic-Level MOSFET Transistor gegenüber einem normalen NPN_Transistor? Mal abgesehen davon, das ich davon wohl noch weniger Ahnung habe. :-) Gruß Dirk
MOSFET haben tendenziell weniger Verlust-Leistung, was sich ab 500mA deutlich bemerkbar macht. Logic-Level MOSFET begnügen sich mit Logik-Pegeln als Steuerspannung, die anderen "normalen" MOSFET brauchen mehr als 5V. MOSFET haben einen kapazitiven Eingang. Bei einfachen an/aus Schaltvorgängen fließt an deren Eingang immer nur sehr kurz ein Strom. Der höchst mögliche Laststrom hängt von der Steuerspannung ab. Zum Beispiel 5V -> 20A. Je größer der Transistor ist, umso höher seine Kapazität, also um so mehr Strom muss man kurzzeitig liefern, damit er schnell genug zwischen den Zuständen an/aus umschaltet. Nicht schnell genug Umschalten bringt zu viel Abwärme. Bipolare Transistoren (NPN, PNP) brauchen einen ständigen Steuerstrom. Der höchst mögliche Laststrom hängt vom Steuerstrom ab. Zum Beispiel 1mA -> 200mA. Je größer der Transistor ist, umso geringer der Verstärkungsfaktor. Du wirst kaum einen 20A Transistor mit Verstärkungsfaktor 200 finden. Deswegen geht man bei Strömen über 500mA mehrstufig vor. Dafür haben bipolare Transistoren eine viel geringere Kapazität, als MOSFET.
Dirk schrieb: > 2. Ist der Stromverbrauch des ATTiny während delay() so gering, das das > ganze eventuell ein paar Tage mit einem Satz Batterien/Akku's läuft? Bei Nutzung von delay() läuft der Mikrocontroller ganz normal weiter und verbringt die Zeit mit Zeit-tot-schlagen. Guck mal ins Datenblatt, was dein ATtiny an Stromsparmodi bereit hält.
Hallo zusammen Erstmal Danke für Eure Tipps und Hinweise. Ich habe jetzt folgenden Code für mein Katzenspielzeug geschrieben. Habe diesen auch gerade eben (mit verkürzten Zeiten) getestet, und mit einer einfachen Stoppuhr kontrolliert. Das sah sehr danach aus, als wenn das ganze sehr exakt läuft. Zusätzlich habe ich die Stromaufnahme kontrolliert. Diese ist während der SLEEP-Phasen tatsächlich etwa 7µA. (Während der delay-Phasen sind es etwa 3,3mA ohne Last am Ausgang) Eventuell mache ich aus dem digitalWrite noch ein analogWrite. Der Code für den SLEEP-MODUS ist allerdings komplett aus dem Netz und dann nur entsprechend angepasst. Verstehen tu ich das leider nicht alles. Aber es funktioniert ja. Jetzt muss ich nur noch so einen Logic-Level-MOSFET finden der möglichst klein ist. Das ganze soll ja nachher mit Batteriespannung (3 x Mignon) laufen. Kann ich bei der Auswahl eines passenden LogiLevel MOSFET nochmal auf Euer Expertenwissen hoffen? Ich weiß leider nicht wie ich da etwas zu meiner Anwendung passendes finden soll. Wie gesagt der kleine Motor der angesteuert werden soll nimmt vermutlich unter 100mA auf. (Zur Sicherheit vielleicht von 200mA ausgehen?) Vielen Dank für Eure Unterstützung Gruß Dirk
1 | #include <avr/sleep.h> |
2 | #include <avr/wdt.h> |
3 | |
4 | ISR(WDT_vect) |
5 | {
|
6 | wdt_disable(); |
7 | }
|
8 | |
9 | void myWatchdogEnable(const byte interval) |
10 | {
|
11 | wdt_reset(); |
12 | |
13 | MCUSR = 0; // reset various flags |
14 | WDTCR |= 0b00011000; // see docs, set WDCE, WDE |
15 | WDTCR = 0b01000000 | interval; // set WDIE, and appropriate delay |
16 | |
17 | ADCSRA &= ~_BV(ADEN); |
18 | |
19 | set_sleep_mode (SLEEP_MODE_PWR_DOWN); |
20 | sleep_bod_disable(); |
21 | sei(); |
22 | sleep_mode(); |
23 | |
24 | ADCSRA |= _BV(ADEN); |
25 | }
|
26 | |
27 | int Schritt = 0; |
28 | int Zeit = 0; |
29 | |
30 | void setup() |
31 | {
|
32 | pinMode (0, OUTPUT); |
33 | }
|
34 | |
35 | void loop(){ |
36 | if (Schritt == 0){ |
37 | Schritt++; |
38 | delay(60000); // 1 Minute warten nach Batterien einlegen |
39 | }
|
40 | |
41 | switch (Schritt){ |
42 | case 1: |
43 | // Schritt 1
|
44 | // 3 Minuten Fahrzeit danach 3Std. 57 Min. PAUSE
|
45 | digitalWrite(0,HIGH); |
46 | delay(180000); |
47 | digitalWrite(0,LOW); |
48 | Zeit = 14220; |
49 | break; |
50 | |
51 | case 2: |
52 | // Schritt 2
|
53 | // 3 Minuten Fahrzeit danach 1 Std. 57 Min PAUSE
|
54 | digitalWrite(0,HIGH); |
55 | delay(180000); |
56 | digitalWrite(0,LOW); |
57 | Zeit = 7020; |
58 | break; |
59 | |
60 | case 3: |
61 | // Schritt 3
|
62 | // 3 Minuten Fahrzeit danach 2 Std. 57 Min. PAUSE
|
63 | digitalWrite(0,HIGH); |
64 | delay(180000); |
65 | digitalWrite(0,LOW); |
66 | Zeit = 10620; |
67 | break; |
68 | |
69 | case 4: |
70 | // Schritt 4
|
71 | // 3 Minuten Fahrzeit danach 14 Std. 57 Min PAUSE
|
72 | digitalWrite(0,HIGH); |
73 | delay(180000); |
74 | digitalWrite(0,LOW); |
75 | Schritt = 0; |
76 | Zeit = 53820; |
77 | break; |
78 | }
|
79 | Schritt++; |
80 | |
81 | |
82 | for (long i = 0; i < Zeit; i++){ |
83 | myWatchdogEnable (0b000110); // 1 second |
84 | }
|
85 | }
|
86 | |
87 | // sleep bit patterns:
|
88 | // 1 second: 0b000110
|
89 | // 2 seconds: 0b000111
|
90 | // 4 seconds: 0b100000
|
91 | // 8 seconds: 0b100001
|
Dirk W. schrieb: > Kann ich bei der Auswahl eines passenden LogiLevel MOSFET nochmal auf > Euer Expertenwissen hoffen? Ich weiß leider nicht wie ich da etwas zu > meiner Anwendung passendes finden soll. https://www.ebay.de/sch/i.html?_from=R40&_trksid=p2047675.m570.l1313.TR0.TRC0.H0.XIRLZ34+.TRS0&_nkw=IRLZ34+&_sacat=0
Ein verbreitetes Beispiel für eine Schaltung, in der ein AVR mit zwei AA-Zellen betrieben wird und einen Motor antreibt, findet sich in den bekannten Thermostatventilköpfen wie z.B. dem HR20 von Honeywell. In dieser Anwendung kommt man durchaus auf zwei Jahre Betriebsdauer mit einem Satz Batterien. In diesem Thread hier finden sich auch Schaltpläne verschiedener dieser Thermostatventilköpfe: Beitrag "Entwicklungen und Forschung um den Sparmatic Comet / Zero v2 Heizungsthermostat"
Rufus Τ. F. schrieb: > In diesem Thread hier finden sich auch Schaltpläne verschiedener dieser > Thermostatventilköpfe: > > Beitrag "Entwicklungen und Forschung um den Sparmatic Comet / Zero v2 > Heizungsthermostat" Wow ... viel zu lesen. Das muss ich mir erstmal zur Gemüte führen. Ist viel Komplexer als ich es benötige. Ich hatte nach dem Hinweis von Stefan Us nach Logic Level MOSFET gesucht, aber auch nur solche mit 20A oder 30A gefunden, wie ihn auch Kolja L. empfohlen hat. Aber ich benötige ja nur max. 200mA. Deswegen dachte ich an einen im TO-92 Gehäuse. Das soll alles in ein kleines Modell-Auto-Gehäuse passen. Ich habe dann jetzt nochmal gegoogelt, und einen Small Signal MOSFET bis 500mA und 60V im TO-92 Gehäuse gefunden (BS170). Leider sagen mir die Daten im Datenblatt wenig. Gate Threshold Voltage max 3,0V (Maximale Spannung am Gate?) Drain Current 0,5A DC (maximaler Strom durch den MOSFET?) Dann könnte dieser doch auch funktionieren, oder? Gruß Dirk
> Gate Threshold Voltage max 3,0V Das ist die Spannung, die höchstens notwendig ist, damit der Transistor gerade beginnt, zu leiten. Damit kannst du kaum was anfangen. Halte lieber nach einem Kurven-Diagramm Ausschau mit dem Drain-To-Source-Current auf der Y Achse und der Gate-To-Source-Voltage auf der X-Achse. Aber Achtung, die Diagramme geben nur das typische Verhalten wieder. Tatsächlich kann etwas mehr Gate-Spannung für deine gewünschten Stromstärke nötig sein, als das Diagramm zeigt. > Drain Current 0,5A DC (maximaler Strom durch den MOSFET?) Ja Ich benutze gerne den IRLU024N weil er dünn genug ist um in größerer Stückzahl direkt neben einer Reihe Schraubklemmen (im 5mm Raster) platziert zu werden. Bei 3V schafft er sicher 1A (habe ich ausprobiert), meisten sogar deutlich mehr.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.