Forum: Mikrocontroller und Digitale Elektronik ATTiny mit Mingnonzellen und Transistor für kleinen Motor


von Dirk (Gast)


Lesenswert?

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 ;-)

von Simplex (Gast)


Lesenswert?

Einfache Zeitschaltuhr aus dem Baumarkt mit Steckernetzteil.
Alles andere wäre für die Katz:-)

von Simplex (Gast)


Lesenswert?

Das würde auch noch Sinn machen :


http://www.irobot.de/Haushaltsroboter/Staubsaugen

von Simplex (Gast)


Lesenswert?


von Jim M. (turboj)


Lesenswert?

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.

von Stefan F. (Gast)


Lesenswert?

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.

von Dirk (Gast)


Lesenswert?

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

von Dirk (Gast)


Lesenswert?

Hat denn noch jemand eine Idee bzgl. des Transistor?

von Stefan F. (Gast)


Lesenswert?

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.

von Dirk (Gast)


Lesenswert?

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

von Stefan F. (Gast)


Lesenswert?

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.

von Wolfgang (Gast)


Lesenswert?

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.

von Dirk W. (dirk_w659)


Lesenswert?

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

von Kolja L. (kolja82)


Lesenswert?

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

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

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"

von Dirk W. (dirk_w659)


Lesenswert?

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

von Stefan F. (Gast)


Lesenswert?

> 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
Noch kein Account? Hier anmelden.