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 ;-)
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
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
voidmyWatchdogEnable(constbyteinterval)
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
intSchritt=0;
28
intZeit=0;
29
30
voidsetup()
31
{
32
pinMode(0,OUTPUT);
33
}
34
35
voidloop(){
36
if(Schritt==0){
37
Schritt++;
38
delay(60000);// 1 Minute warten nach Batterien einlegen
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.