Halli Hallo, ich bin noch recht neu im Gebiet der Microcontroller und habe auf der Seite schon etliche Beiträge durchsucht aber leider nicht den passenden gefunden. Ich brauche ein konstantes PWM-Signal mit nur 0,1Hz und einem festen Tastverhältnis von 95%. Die einzige Vorraussetzung ist, dass es möglichst günstig ist. Da ich noch sehr unerfahren bin, weiß ich nicht welcher Mikrocontroller dafür geeignet ist, aus den Datenblättern werde ich immer nur bedingt schlau. Ich würde mich über eure Ideen und Anregungen sehr freuen, vielen Dank im voraus!
Hoi, da nimmst Du einen 555 - Timer, der am Ausgang alle 10 Sekunden für 0.5 Sek auf Low geht! Am besten mal noch 555-Timer Schaltungen googeln. Gruß T.
Ich bin wirklich ein Fan davon alles mit einem uC zu erschlagen, aber in diesem Fall würde sogar ich zu einem 555 greifen
Hallo, eine wichtige Angabe wäre noch, wie genau Frequenz und Tastverhältnis stimmen müssen. Wenn da keine hohe Genauigkeit gefordert wird, eigentlich jeder. Sogar ein PIC10F200 sollte das schaffen. Für den bekommst Du aber keinen C-Compiler.
swagner95 schrieb: > Ich brauche ein konstantes PWM-Signal mit nur 0,1Hz und einem festen > Tastverhältnis von 95%. Die einzige Vorraussetzung ist, dass es > möglichst günstig ist. Wenn du erstmal einen µC hast, kostet das praktisch nichts! ;-) > Da ich noch sehr unerfahren bin, weiß ich nicht > welcher Mikrocontroller dafür geeignet ist, Jeder mit 'PWM-Output'. Ich bevorzuge AVRs: http://www.microchip.com/paramChartSearch/chart.aspx?branchID=30047 Lehrmaterial: https://www.mikrocontroller.net/articles/AVR-Tutorial:_PWM > aus den Datenblättern werde ich immer nur bedingt schlau. ^^
Wenn man schon eine passende Spannungsversorgung hat, ist der PIC10 kleiner =8-D . Aber der NE555 bewahrt Dich zuverlässig vor Softwarefehlern.
Der Preis ist ja schon mal ein Traum. :) Super, danke für den Tipp!
Nur Vorsicht, wenn Ihr so was lahmes mit einem Timer machen wollt : ein 16 Bit-Timer mit 1:1024 Vorteiler darf dann nur mit gut 6 MHz getaktet werden...
fop schrieb: > Nur Vorsicht, wenn Ihr so was lahmes mit einem Timer machen wollt : > ein 16 Bit-Timer mit 1:1024 Vorteiler darf dann nur mit gut 6 MHz > getaktet werden... Naja man kann im Interrupt ja Software-seitig einen Zähler hoch zählen lassen. Bei uint_16 kann man den ruhig ein wenig höher takten ;)
fop schrieb: > Nur Vorsicht, wenn Ihr so was lahmes mit einem Timer machen wollt > : > ein 16 Bit-Timer mit 1:1024 Vorteiler darf dann nur mit gut 6 MHz > getaktet werden... Naja, ich denke mal, bei Pulsdauern von 10Sekunden wird es vermutlich nicht wichtig sein, daß der PWM-Pin Taktgenau (ns-Bereich) wackelt. Da sollte es auch ein softwaregesteuertes Pin-Wackeln tun. Aber prinzipiell hast du natürlich Recht!
Stefan S. schrieb: > Naja man kann im Interrupt ja Software-seitig einen Zähler hoch zählen > lassen. Er will 'ne PWM und keine Zeitbasis. Außerdem: swagner95 schrieb: > ich bin noch recht neu im Gebiet der Microcontroller
Das Problem kann man doch mit jedem 1,50 Arduino Board und 10 Zeilen Code in der IDE erschlagen. Da ist man flexibel.
Edit: Ralf G. schrieb: > Er will 'ne PWM und keine Zeitbasis. Obwohl... wenn das alles ist, was der TO will, dann reicht das natürlich völlig.
Ralf G. schrieb: > Er will 'ne PWM Nein, er will FESTES Pulsdauern (10s) bei FESTEN Pausen (9,5s). Da soll nichts moduliert werden.
Vielen Dank für eure Hilfe. Ich guck mir die Vorschläge alle mal an und überleg' mir dann was am besten past. Ich finde es echt witzig, dass automatisch davon ausgegangen wird, dass ich ein "er" bin :P Das ist nämlich gar nicht der Fall. :D
Der 555 ist doch RC-gesteuert, macht also einen Fehler bei dem D.C. Wenn es ungenau sein darf, nimm den, ansonsten einen kleinen PIC der einfach zählen kann. Da gibt es auch keine grossen "Softwarefehler" :-D
swagner95 schrieb: > Vielen Dank für eure Hilfe. > Ich guck mir die Vorschläge alle mal an und überleg' mir dann was am > besten past. > > Ich finde es echt witzig, dass automatisch davon ausgegangen wird, dass > ich ein "er" bin :P Das ist nämlich gar nicht der Fall. :D Na denn: :) https://www.adafruit.com/product/1222 kostet nen zehner (plus Versand, exklusive Nagellack - der ist nicht dabei) StromTuner
swagner95 schrieb: > Ich finde es echt witzig, dass automatisch davon ausgegangen wird, dass > ich ein "er" bin :P Das ist nämlich gar nicht der Fall. :D Dann gibt es ja nur noch zwei Möglichkeiten.
fop schrieb: > Sogar ein PIC10F200 sollte das schaffen. Für den > bekommst Du aber keinen C-Compiler. Doch, XC8. Allerdings braucht man für den PIC einen Programmer.
Axel R. schrieb: > Na denn: :) > https://www.adafruit.com/product/1222 > kostet nen zehner (plus Versand, Ein etwas überzogener Preis für das Designerteil. > exklusive Nagellack - der ist nicht dabei) Musste das sein? swagner95 schrieb: > ich bin noch recht neu im Gebiet der Microcontroller Du musst nun entscheiden, wie tief Du einsteigen willst, wie gut Deine Kenntnisse sind, eine Entwicklungsumgebung einzurichten und ob Du Programmierhardware kaufen willst. Hier geht das um 10 Sekunden Umlaufzeit, das sollte ein totaler Anfänger mit einem beliebigen Aurduino binnen weniger Stunden lösen können. Die Fernost-Nachbauten kosten niedrig einstellige Euro, die "Entwicklungsumgebung" IDE kostet nichts und programmiert wird über ein USB-Kabel.
Für Anfänger ist ganz klar ein Arduino Board zu empfehlen. Das "Blink" Beispiel kann dann mit den benötigten Zeitintervallen angepasst werden. Benötigt wird in diesem Fall: - 1 Arduino Board (z.B. Arduino UNO, Arduino Nano, ...) - 1 USB Kabel - Arduino IDE (https://www.arduino.cc/en/Main/Software) - Blink Beispiel
1 | void setup() { |
2 | // initialize digital pin 13 as an output. |
3 | pinMode(13, OUTPUT); |
4 | } |
5 | |
6 | // the loop function runs over and over again forever |
7 | void loop() { |
8 | digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level) |
9 | delay(1000); // wait for a second |
10 | digitalWrite(13, LOW); // turn the LED off by making the voltage LOW |
11 | delay(1000); // wait for a second |
12 | } |
Hi Manfred schrieb: > Hier geht das um 10 Sekunden Umlaufzeit, das sollte ein totaler Anfänger > mit einem beliebigen Aurduino binnen weniger Stunden lösen können. Die > Fernost-Nachbauten kosten niedrig einstellige Euro, die > "Entwicklungsumgebung" IDE kostet nichts und programmiert wird über ein > USB-Kabel. Dabei hat der Arduino den Vorteil, daß man damit dann auch 'Mehr' machen kann - vll. bekommt man ja Lust auf Mehr - und mit einem Arduino ist man sehr schnell an umfangreicher Hardware auf Funktion - man muß sich nicht unbedingt um die 'Innereien' kümmern. MfG
npn schrieb: > Nein, er will FESTES Pulsdauern (10s) bei FESTEN Pausen (9,5s). > Da soll nichts moduliert werden. Warum sagt er dann Puls-Weiten- Modulation , wenn er gar nicht modulieren will?
Weil SIE wohl offensichtlich Anfängerin ist und sich mangels Wissen nicht sauber ausdrücken kann. PWM ist so ziemlich der erste Begriff, den man im Netz findet, sie scheint zumindest mal gegoogelt und sich damit beschäftigt zu haben.
Ungetestet, aus der hohlen Hand:
1 | float PwmOn_percent=5; |
2 | int PwmPeriodTime_ms=10000; |
3 | |
4 | void setup() |
5 | {
|
6 | pinMode(13, OUTPUT); |
7 | }
|
8 | |
9 | void loop() |
10 | {
|
11 | int PwmOffTime_ms=PwmPeriodTime_ms*PwmOn_percent/100; |
12 | |
13 | digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level) |
14 | |
15 | delay(PwmPeriodTime_ms-PwmOffTime_ms); |
16 | |
17 | digitalWrite(13, LOW); // turn the LED off by making the voltage LOW |
18 | |
19 | delay(PwmOffTime_ms); // wait for a second |
20 | }
|
komische Leute schrieb: > Warum sagt er dann Puls-Weiten- Modulation , wenn er gar nicht > modulieren will? Leroy M. schrieb: > Weil SIE wohl offensichtlich Anfängerin ist und sich mangels Wissen > nicht sauber ausdrücken kann. Weil Ihr meint, schlau zu sein? Auf der Leitung befindet sich ein Signal, also darf diese als moduliert bezeichnet werden. Eine PWM ist und bleibt eine PWM, selbst, wenn deren Tastverhältnis über Stunden oder Tage oder ... nicht verstellt wird.
Wie genau sollen denn die Zeiten eingehalten werden? (Möglichst genau ist keine brauchbare Antwort, nenne Zahlen).
Klugscheißer schrieb: > ... Eine PWM ist > und bleibt eine PWM, selbst, wenn deren Tastverhältnis über Stunden oder > Tage oder ... nicht verstellt wird. Stimmt schon, ist aber in diesem Fall nicht hilfreich. Schließlich erzeugt eine Batterie auch ein PWM-Signal (100%) und auch ein Stück Draht (0%). Ist aber egal, die Beschreibung war ja korrekt.
asdfasd schrieb: > Ein popeliger Multivibrator ... Wenn man denn diese 8 Bauteile noch zusammen bringen kann - ältere Generation? War auch mein Gedanke, aber die Frage war ja explizit "welchen Mikrocontroller". Natürlich darf man das hinterfragen, die sinnvolle Festlegung eines Konzeptes ohne Fachwissen ist kaum möglich.
> Ungetestet, aus der hohlen Hand:
Naja, sehr genau ist das nicht. Das Timining wird immer etwas langsamer
sein, als berechnet wurde, weil digitalWrite und die wiederholte
Berechnung von PwmOffTime_ms und der Code zwischen den Aufrufen der loop
Funktion auch Zeit benötigt.
Ich würde eher einen freilaufenden Timer und die Modulo Operation
verwenden. etwa so:
1 | void loop() |
2 | { |
3 | digitalWrite(13, ((millis()/1000)%10) < 2); |
4 | } |
Wobei man sich da eventuell noch Gedanken über den Zähler-Überlauf machen müsste.
> Ich brauche ein konstantes PWM-Signal mit nur 0,1Hz und einem festen > Tastverhältnis von 95%. Die einzige Vorraussetzung ist, dass es > möglichst günstig ist. Im Grunde genommen ist dazu jeder Mikrocontroller geeignet. Um eine gute Wahl zu treffen, brauchen wir noch mehr Angaben zu den Rahmenbedingungen. Wie genau muss das Timing eingehalten werden? Wie ist die Stromversorgung gestaltet? Spielen die Kosten für den Programmieradapter eine Rolle? Soll es ein "nackter" Chip sein oder ein Modul? Soll der Chip oder das Modul eventuell mitsamt PC Interface sein? Kennst du schon eine Programmiersprache, die du dazu bevorzugst? Soll der Chip sonst nichts anderes tun? Als einer der kleinsten denkbaren Kandidaten käme ein ATtiny4 in Frage. Aber dazu brauchst du einen Programmieradapter, der relativ viel kostet. http://www.atmel.com/images/atmel-8127-avr-8-bit-microcontroller-attiny4-attiny5-attiny9-attiny10_datasheet.pdf Etwas größer wäre der ATtiny25, den kannst du mit den billigsten Programmieradaptern programmieren und ggf einen Quarz anschließen. Als günstigstes Modul mitsamt PC Schnittstelle fällt mir der Arduino Nano mit ATmega328P ein, den bekommt man üblicherweise für 3 Euro, manchmal auch noch billiger. Als Taktgeber dient hier ein Keramik Resonator.
Bei 0,1Hz kann man auch was für den Arbeitsmarkt investieren und einen 1-€-Jobber an einen Schalter stellen...
Wenn man eine weitgehend frei programmierbare Lösung mit µC sucht, gibt es hier ein fertiges Programm für einen ATtiny4313: http://mino-elektronik.de/Generator/takte_impulse.htm#bsp2 Per Timer1 werden Frequenzen von 0,01 Hz - 50 kHz und Pulsweiten von 5 µs - 10 s mit jeweils 50 ns Auflösung erzeugt. Die Einstellung erfolgt per RS232. Die Grundfunktion (ISR) braucht nur wenige Programmzeilen, während der Hauptteil des Programmes der Bedienung der RS232 dient. Die einmal programmierten Zeiten werden im EEPROM fürs nächste Einschalten gespeichert. Ohne selber löten zu müssen, kann man mit ein paar kleinen Anpassungen das Programm auf einen Arduino mit AVR übertragen und dann per USB (serial monitor) bedienen. Simple Schaltungen für lange Puls-Pausen-Zeiten sind hier aufgeführt: http://mino-elektronik.de/Powerbank/powerbank.htm Den Lastwiderstand wählt man einfach größer, um die Stromaufnahme zu senken. Vielleicht reicht so eine einfache Schaltung ja schon aus.
swagner95 schrieb: > Ich brauche ein konstantes PWM-Signal mit nur 0,1Hz und einem festen > Tastverhältnis von 95%. Die einzige Voraussetzung ist, dass es > möglichst günstig ist.
1 | digitalWrite(13, HIGH); |
2 | delay(500); |
3 | digitalWrite(13, LOW); |
4 | delay(9500); |
http://www.ebay.de/itm/Mini-Micro-USB-UNO-R3-CH340G-ATmega328P-Replace-ATmega16U2-Compatible-to-Arduino-/272655881017 http://www.ebay.de/itm/ATmega328P-Mini-USB-Nano-V3-0-CH340G-5V-16M-Micro-controller-Board-For-Arduino-/172425955537
Georg M. schrieb: > Ebay-Artikel Nr. 272655881017 > > Ebay-Artikel Nr. 172425955537 Für einen Anfänger dürfte in diesem Fall erst einmal ein 555er überschaubarer sein.
Klaus R. schrieb: > Für einen Anfänger dürfte in diesem Fall erst einmal ein 555er > überschaubarer sein. Die SW-Lösung hat aber den Vorteil, daß man die gewünschten Impulszeiten einfach in Klartext in das Programm schreiben kann. Mit einen 555 wird es schon schwer, die 10s genau auszumessen.
Stefan U. schrieb: > Naja, sehr genau ist das nicht. Das Timining wird immer etwas langsamer > sein, als berechnet wurde, weil digitalWrite und die wiederholte > Berechnung von PwmOffTime_ms und der Code zwischen den Aufrufen der loop > Funktion auch Zeit benötigt. Dem ist so! Stefan U. schrieb: > Wobei man sich da eventuell noch Gedanken über den Zähler-Überlauf > machen müsste. Wer will das schon....
1 | const byte output = 13; // SoftPWMOutputPin |
2 | const unsigned long zeitPeriode = 10000; // 10s |
3 | const unsigned long zeitOff = 500; // 0,5s |
4 | const unsigned long zeitOn = zeitPeriode-zeitOff; |
5 | |
6 | void PwmGenerator() |
7 | {
|
8 | static unsigned long zeitMerker = 0; |
9 | static bool zustandsMerker = false; // beginne mit LOW Phase |
10 | |
11 | unsigned long warteZeit = zustandsMerker?zeitOn:zeitOff; |
12 | if(millis()-zeitMerker>=warteZeit) |
13 | {
|
14 | zeitMerker += warteZeit; |
15 | zustandsMerker = !zustandsMerker; |
16 | digitalWrite(output, zustandsMerker); |
17 | }
|
18 | }
|
19 | |
20 | void setup() |
21 | {
|
22 | pinMode(output, OUTPUT); |
23 | }
|
24 | |
25 | void loop() |
26 | {
|
27 | PwmGenerator(); |
28 | }
|
Getestet auf einem UNO und einem ATTiny85(Digispark). Sollte mit jedem (halbwegs) Arduino kompatiblen µC so laufen. (Outputpin anpassen) Arduinos verwenden meist Resonatoren. Für höhere Genauigkeit, einen mit Quarz wählen. Oder eben einen nackten AVR damit ausstatten. Irgendwelche Ressourceneinsparungen scheinen mir hier nicht von Belang. Also frei nach dem Motto: Übersicht hat Vorrang.
Der NE555 funktioniert von ganz alleine. Der Mikrocontroller muss vorher programmiert werden. Für jemanden, der das noch nie gemacht hat, ist das schon eine große Hürde. Allerdings lohnt sich die Mühe. Das dabei gelernte kann man sicher noch woanders mal brauchen.
m.n. schrieb: > Ohne selber löten zu müssen, kann man mit ein paar kleinen Anpassungen > das Programm auf einen Arduino mit AVR übertragen und dann per USB > (serial monitor) bedienen. Ich habe das für einen Arduino Uno mal eben selber gemacht. Die Auflösung beträgt bei 16 MHz nun 62,5 ns; als Ausgang dient PB2 (Arduino Pin-Nr. 10).
Hi m.n. schrieb: > 16 MHz nun 62,5 ns Was durchaus logisch klingt, da man für 16 Millionen gleich verteilte Takte in einer Sekunde ziemlich genau 62,5ns Zeit pro Takt hat. (1 MHz braucht 1µs pro Takt - eine Millionen Takte pro Sekunde brauchen eine Millionstel-Sekunde Taktzeit - 1/16tel µs sind genau die 62,5 ns) Wobei hier vll. noch eingeworfen werden kann, daß vom Match (der Endwert wurde soeben erreicht) bis zum Ändern des Ausgang nun auch noch ein/zwei Takte benötigt werden - da Dort wohl ein Interrupt benutzt wird, sind schon zig Takte für's Sichern diverser Register (neben PC und Jump zur ISR wie dem Return) nötig - wobei das Return wohl NACH dem Setzen des Pin geschieht ;) Aber ja, eine Auflösung von 62,5ns hat man trotzdem, da ein um 1 größerer Endwert ziemlich genau 62,5ns später zum Umschalten des Pin führt. Wenn auch die absolute Zeit eine Differenz aufweisen wird. Was aber wohl - im 10-Sekunden-Raster - eher nicht von großartiger Bedeutung sein wird. MfG
Patrick J. schrieb: > Wobei hier vll. noch eingeworfen werden kann, Deinen Einwurf kannst Du getrost wieder wegwerfen ;-) Die Ausgangsimpulse werden von der Compare-Einheit des µC erzeugt und sind exakt und ohne Jitter. Der ausgelöste Interrupt hinkt der Signaländerung hinterher und sorgt dafür, das der Vergleichswert für die nächste Signaländerung nachgeladen wird. Die Laufzeit der ISR ist der Grund dafür, daß die minimale Impulsbreite auf ca. 5 µs begrenzt ist.
Hmm, wenn ich die Anwendung raten müsste, würde ich Timelapse fotografie raten :)
Mikrocontroller hat auf jeden Fall den Vorteil, dass man bei einer eventuellen Erweiterung des Projekts große Spielräume hat. Wie man es mit einem µC dann letztlich macht, ist jedem selbst überlassen. Zur Auswahl stünden unter Anderem: * PWM mittels Interrupt-Timer * Simple Schaltung mittels Delay und DigitalWrite (Arduino) * Arbeit mit Zeitstempeln und Loop-Vergleich (Arduino, Beispiel unten) * Direkte Schaltung mittels Interrupt-Timer * Endlosschleife mit ein oder mehr Zählstufen * Umsetzung in Assemblercode für allerhöchste Präzision
1 | unsigned long lastSwitch = millis(); //Zeitpunkt der letzten Schaltung |
2 | boolean currentlyHigh = true; //Merker, ob der pin gerade High oder Low ist |
3 | setup() { |
4 | pinMode(MYPIN, OUTPUT); |
5 | digitalWrite(MYPIN, currentlyHigh); //Wert in Ausgang schreiben |
6 | }
|
7 | loop() { |
8 | if(millis() - lastSwitch >= currentlyHigh ? 9500 : 500) { //Wie viel Zeit ist seit letzter Umschaltung vergangen (in ms), wenn gerade HIGH, dann 9500 ms warten, sonst 500 |
9 | lastSwitch = millis(); //Zeitstempel anpassen |
10 | currentlyHigh != currentlyHigh; //Merker invertieren |
11 | digitalWrite(MYPIN, currentlyHigh); //Wert in Ausgang schreiben |
12 | }
|
13 | }
|
Der Merker kann man sich sogar sparen, wenn man an den entsprechenden Stellen den Pin mittels DigitalRead(MYPIN) einliest.
:
Bearbeitet durch User
André R. schrieb: > * Umsetzung in Assemblercode für allerhöchste Präzision Das ist doch garnicht notwendig, wenn man die Compare-Hardware des µC nutzt s.o..
Das ist natürlich wahr. Ich wollte nur aufzeigen, dass es hier wie so oft viele Wege gibt, die nach Rom führen. In einem größeren Projekt, wo nicht genügend Timer zur Verfügung stehen, muss man ggf. kreativ werden. Und da eignen sich die von mir genannten Möglichkeiten ggf.
Stefan U. schrieb: > Im Grunde genommen ist dazu jeder Mikrocontroller geeignet. > > Um eine gute Wahl zu treffen, brauchen wir noch mehr Angaben zu den > Rahmenbedingungen. > > Wie genau muss das Timing eingehalten werden? > Wie ist die Stromversorgung gestaltet? > Spielen die Kosten für den Programmieradapter eine Rolle? > Soll es ein "nackter" Chip sein oder ein Modul? > Soll der Chip oder das Modul eventuell mitsamt PC Interface sein? > Kennst du schon eine Programmiersprache, die du dazu bevorzugst? > Soll der Chip sonst nichts anderes tun? Bitte entschuldige die späte Antwort, das Projekt wurde für eine Weile aus Eis gelegt, aber hier die weiteren Angaben: Die Genaugkeit des Timing ist nicht ausschlaggebend und muss nicht berücksichtigt werden. Die Stromversorgung läuft über ein Netzteil mit 12 V Die Kosten sollen für die gesamte Lösung so minimal wie möglich gehalten werden. Ob nackter Chip oder Modul, genau das ist eigentlich meine Frage. An Programmiersprachen beherrsche ich Java, C++, VBA und etwas Python aber die unterscheiden sich ja nicht so stark, ich würde mir dafür auch nochmal was neues angucken. Der Chip soll nichts anderes tun als dieses eine PWM-Signal zu senden. Die wichtigste Vorraussetzung ist, dass ich den Chip leicht programmieren kann und möglichst wenig Hardware selbst irgendwie anordnen und dimensionieren muss, denn das ist nun wirklich nicht meine Stärke, ich bin eher die Informatikerin.
Dann nimm einen NE555, den braucht man gar nicht zu programmieren und er läuft mit 12V. Wenn es unbedingt ein µC sein soll, dann wird irgendein Arduino Modul für Dich das einfachste sein. Kannst du wahlweise mit oder ohne Arduino IDE programmieren.
swagner95 schrieb: > Die wichtigste Vorraussetzung ist, dass ich den Chip leicht > programmieren kann und möglichst wenig Hardware selbst irgendwie > anordnen und dimensionieren muss, denn das ist nun wirklich nicht meine > Stärke, ich bin eher die Informatikerin. Hier habe ich dir schon alles haarklein vorgekaut. Beitrag "Re: PWM-Signal mit 0,1 Hz erzeugen" Vom Hardware Gefummel aus gesehen ist es erheblich einfacher z.B. einen Digispark einzusetzen, als einen Ne555 mit seiner Beschaltung zu versehen. Ich würde an der Stelle sicherlich einen nackten ATTiny85 einsetzen, aber auch nur, weil in meinem Lager eine Stange davon liegt. Aber wie schon gesagt wurde: Jeder µC sollte das können. Es ist also, im Grunde, völlig egal, welchen du verwendest.
Alles klar, ich bedanke mich für die vielen nützlichen Beiträge! Jetzt muss ich mich nur noch für einen Weg entscheiden und dann kann es los gehen :)
Also wenn du planst, mehr als nur dieses PWM-Signal zu erzeugen mit Mikrocontrollern dann empfehle ich dir einen UBSTiny zum Programmieren zu beschaffen und einen ATTiny45/85 als Entwicklungsboard. Beides gibts bei eBay für zusammen weniger als 10 Euro, das Atmel Studio ist kostenlos und damit kann man dann auch direkt loslegen. Und hier gibts jede Menge Informationen zu den AVRs. PICs sind aber genauso gut, da kenn ich mich nur nicht mit aus. Wenn es dir aber nur um das PWM-Signal geht: Löse es mit einem NE555.
Stefan U. schrieb: > Dann nimm einen NE555, den braucht man gar nicht zu programmieren > und er läuft mit 12V. Also wenn ich das richtig erinnere wird das recht störanfällig. Die RC Kombi ist bei 10sec Periodendauer sehr hochohmig oder. Alternativ wird der Kondensator sehr groß und hat dann entweder Leckströme, altert stark oder ist teuer. Das läuft mMn nicht zuverlässig und für ein paar Takte kann man auch nen Klingeltaster nehmen. Wenn die TE zwar proggen aber keine Hardware kann wird billig schwierig. Ein Demoboard das 12 V als Versorgung kann und 12V Pulse ausgibt dann auch noch nichts kostet wird nicht ganz einfach zu finden sein. Ich würde das übrigens mit ner gebrauchten 12/24V LOGO! SPS machen. 1. Hab ich die Softwarelizenz 2. muss die das ganze nur an die Schraubklemmen anschließen und 3. da steht dann ich eine kompakte Kiste ohne gebastel die auch extrem zuverlässig läuft und 4, ist das Programm in 10 Minuten fertig und läuft garantiert.
swagner95 schrieb: > Die einzige Vorraussetzung ist, dass es > möglichst günstig ist. Ja so fangen Sie alle an. Am billigsten ist es wenn du selbst auf nen Taster drückst, aber halt, wenn man dann den Stundenlohn rechnst ... Die Qualität der Antworten ist nun mal direkt proportional zu der Qualität der Fragestellung. Da du leider deine Rahmenbedingungen nicht beschrieben hast ist auch keine sinnvolle Antwort möglich. Für den Einstieg fehlen so Dinge wie: Wo wird das ganze eingesetzt Wie lange " " " Was wird angesteuert Was ist günstig Wie viele werden gebraucht Gehäuse oder Bastellösung usw. Es gibt irgendwo hier ne Seite die beschreibtwas man bei Fragen berücksichtigen sollte, die ist aber imho gut versteckt.
X4U schrieb: > Für den Einstieg fehlen so Dinge wie: > Wo wird das ganze eingesetzt > Wie lange " " " > Was wird angesteuert > Was ist günstig > Wie viele werden gebraucht > Gehäuse oder Bastellösung > > usw. > > Es gibt irgendwo hier ne Seite die beschreibtwas man bei Fragen > berücksichtigen sollte, die ist aber imho gut versteckt. Wie lange ist wichtig. Der 555 ist nicht gerade ein Stromsparwunder. Alternativ gibt es aber den ICM7555. @TO Wie genau muss das Ganze den sein?
Jörg R. schrieb: > @TO > Wie genau muss das Ganze den sein? swagner95 schrieb: > Die Genaugkeit des Timing ist nicht ausschlaggebend und muss nicht > berücksichtigt werden.
Jörg R. schrieb: > Wie lange ist wichtig. Der 555 ist nicht gerade ein Stromsparwunder. > Alternativ gibt es aber den ICM7555. ist ja nicht spezifiziert also kann er auch kW ziehen ;-) Aber vom Prinzip her kann Sie sich doch irgendeinen Wechselblinker von Conrad Völkner ELV etc. ordern. Hauptsache sind 2 Potis drauf und der Zeitbereich stimmt. Dazu noch ein Relais oder besser nen Blinker mit Relaisausgang.
Erwin D. schrieb: > Jörg R. schrieb: >> @TO >> Wie genau muss das Ganze den sein? > > swagner95 schrieb: >> Die Genaugkeit des Timing ist nicht ausschlaggebend und muss nicht >> berücksichtigt werden. Und welcher Kommentar ist nun hilfreicher? Es findet sich doch immer jemand der die Fehler anderer aufspürt? X4U schrieb: > Jörg R. schrieb: >> Wie lange ist wichtig. Der 555 ist nicht gerade ein Stromsparwunder. >> Alternativ gibt es aber den ICM7555. > > ist ja nicht spezifiziert also kann er auch kW ziehen ;-) Deswegen fragt man nach. Vielleicht hat der TO nicht darüber nachgedacht.
:
Bearbeitet durch User
X4U schrieb: > Jörg R. schrieb: >> Wie lange ist wichtig. Der 555 ist nicht gerade ein Stromsparwunder. >> Alternativ gibt es aber den ICM7555. > > ist ja nicht spezifiziert also kann er auch kW ziehen ;-) Ein Sparwitz'le gemacht. > Aber vom Prinzip her kann Sie sich doch irgendeinen Wechselblinker von > Conrad Völkner ELV etc. ordern. Hauptsache sind 2 Potis drauf und der > Zeitbereich stimmt. Dazu noch ein Relais oder besser nen Blinker mit > Relaisausgang. Die Frage von Jörg R. ist absolut berechtigt. Es ist beim Kauf und bei der Planung entscheidend, was man genau damit macht. Den NE555er über Batterien bzw. Akkus ist zum Beispiel Verschwendung. Was nützt ihm die Enttäuschung über den hohen Ruhestrom wenn er einen anderen 555er nehmen kann, bei dem die Batterie länger durchhält, weil der Ruhestrom geringer ist. Vergisst man oftmals bei der Planung. Ist um eine Ecke weiter gedacht. :)
:
Bearbeitet durch User
H. E. schrieb: > X4U schrieb: >> Jörg R. schrieb: >>> Wie lange ist wichtig. Der 555 ist nicht gerade ein Stromsparwunder. >>> Alternativ gibt es aber den ICM7555. >> >> ist ja nicht spezifiziert also kann er auch kW ziehen ;-) > Ein Sparwitz'le gemacht. Jupp, und zwar mit Leidenschaft. > Was nützt ihm die Enttäuschung über den hohen Ruhestrom wenn er einen > anderen 555er nehmen kann, bei dem die Batterie länger durchhält, weil > der Ruhestrom geringer ist. Vergisst man oftmals bei der Planung. Ist um > eine Ecke weiter gedacht. :) Aber eine Ecke zu kurz :-) 555 oder 7555 und Batterien waren vor 30 Jahren mittel der Wahl. Ein nanoWatt uC und ein LDO (falls Vin > 6V) liegen weit unter der Selbstentladung.
X4U schrieb: > 555 oder 7555 und Batterien waren vor 30 Jahren mittel der Wahl. Ein > nanoWatt uC und ein LDO (falls Vin > 6V) liegen weit unter der > Selbstentladung. Du machst Dir selbst ein X für ein U vor, Mister X4U. Den 555 kennt man noch wenn Arduino und Co längst vom Markt sind. Es geht auch heute noch ohne uC und App. Batterien verwende ich auch nach wie vor.
:
Bearbeitet durch User
Nur noch der Vollständigkeit halber... sehr einfach ist bei sowas auch ein Uhrenquarz und Takte zählen. Wenn man bare metal machen möchte, ist das eine gute Fingerübung mit Assembler oder einfachen Timern. Z.B. eine Endlossschleife auf 0.5s takten und bei 1 von 20 Taken halt umschalten. Oder direkt entsprechenden Timer konfigurieren.
Achim S. schrieb: > Nur noch der Vollständigkeit halber... sehr einfach ist bei sowas > auch > ein Uhrenquarz und Takte zählen. Wenn man bare metal machen möchte, ist > das eine gute Fingerübung mit Assembler oder einfachen Timern. Oder einfach teilen, mit Oldschool 74ern...40ern....
Eine (immer noch geniale) Möglichkeit, ein beliebiges Digitalsignal zu erzeugen ist eine Zähler und daran ein EEPROM (also die Adresspins). Und ein Datenbit ist dann der Ausgang. Und wenn man die anderen 7 oder 15 Datenbits an weitere Adresspins legt, dann bekommt man mit einem 4040 oder 4060 als Zähler schon 20Bit-Zähler (bei einem 1MByte-EEPROM) direkt hin. Mit 32-kHz-Takt könnte man so etwa eine halbe Minute ein beliebiges Signal im 30µs-Raster laufen lassen. Wir nutzen das z.B. für einen IRDA-Scheinwerfer, der wie ein Leuchtturm das immer gleiche Signal rausschiebt.
Solange der TE keine Angaben über die Genauigkeit, den Jitter und die Lagestabilität der Frequenz macht, ist die billigste Version wahrscheinlich eine retriggerbares Monoflop mit autoreset.
X4U schrieb: > H. E. schrieb: >> X4U schrieb: >>> Jörg R. schrieb: >>>> Wie lange ist wichtig. Der 555 ist nicht gerade ein Stromsparwunder. >>>> Alternativ gibt es aber den ICM7555. >>> >>> ist ja nicht spezifiziert also kann er auch kW ziehen ;-) >> Ein Sparwitz'le gemacht. > > Jupp, und zwar mit Leidenschaft. > >> Was nützt ihm die Enttäuschung über den hohen Ruhestrom wenn er einen >> anderen 555er nehmen kann, bei dem die Batterie länger durchhält, weil >> der Ruhestrom geringer ist. Vergisst man oftmals bei der Planung. Ist um >> eine Ecke weiter gedacht. :) > > Aber eine Ecke zu kurz :-) Das Gegenteil ist der Fall. > > 555 oder 7555 und Batterien waren vor 30 Jahren mittel der Wahl. Ein > nanoWatt uC und ein LDO (falls Vin > 6V) liegen weit unter der > Selbstentladung. Unsinn. Der Baustein hat schon sehr viele Hypes überlebt. Und wird es auch weiterhin. Ein uC für den zweck total overdesigned. Echte Bastler verwenden für so eine einfache Aufgabe Baustein(e) und keinen uC. Oder gehst Du zum YouTube Videos gucken ins Kino? ?
> Solange der TE keine Angaben über die Genauigkeit, den > Jitter und die Lagestabilität der Frequenz macht Hat er doch, die Genauigkeit ist nicht wichtig. Zur Stromaufnahme hat er nichts gesagt, aber es soll 12V sein. Um einen µC an 12V zu betrieben, braucht man einen Spannungsregler. Damit er 12V ausgeben kann, braucht er dazu einen Treiber. Bei einem NE555 oder dem ICM7555 entfällt dieser zusätzliche Aufwand.
Jürgen S. schrieb: > Solange der TE keine Angaben über die Genauigkeit, den Jitter und die > Lagestabilität der Frequenz macht, Das hat sie doch schon längst getan: swagner95 schrieb: > Die Genaugkeit des Timing ist nicht ausschlaggebend und muss nicht > berücksichtigt werden.
H. E. schrieb: > Ein uC für den zweck total overdesigned. Echte Bastler > verwenden für so eine einfache Aufgabe Baustein(e) und keinen uC. Hm, der TE hat 12V zur Verfügung, die Genauigkeit ist untergeordnet. Ich überlege mal kurz: - 2 Widerstände - 1 Kondensator - 1 Z-Diode (3.3 V z.B.) - 1 Transistor - 1 Attiny45 (z.B.) 1 Widerstand und Z-Diode um die 12 V des TEs auf eine Spannung für den Attiny zu bringen, 1 Widerstand und Transistor als Pegelwandler, Kondensator für den Attiny zum abblocken. IMO ist das ein überschaubarer Aufwand. Geht auch sicher anders (z.B. mit dem NE555), keine Frage. Aber ehrlich gesagt glaube ich nicht, dass sich das groß unterscheidet. Diese ganze Gebashe von wegen Analog oder Mikrocontroller ist völlig unnötig. Einfach Lösungen vorstellen und den TE entscheiden lassen.
:
Bearbeitet durch User
M. K. schrieb: > H. E. schrieb: >> Ein uC für den zweck total overdesigned. Echte Bastler >> verwenden für so eine einfache Aufgabe Baustein(e) und keinen uC. > > Hm, der TE hat 12V zur Verfügung, die Genauigkeit ist untergeordnet. Ich > überlege mal kurz: > > - 2 Widerstände > - 1 Kondensator > - 1 Z-Diode (3.3 V z.B.) > - 1 Transistor > - 1 Attiny45 (z.B.) > > 1 Widerstand und Z-Diode um die 12 V des TEs auf eine Spannung für den > Attiny zu bringen, 1 Widerstand und Transistor als Pegelwandler, > Kondensator für den Attiny zum abblocken. > IMO ist das ein überschaubarer Aufwand. Geht auch sicher anders (z.B. > mit dem NE555), keine Frage. Aber ehrlich gesagt glaube ich nicht, dass > sich das groß unterscheidet. > > Diese ganze Gebashe von wegen Analog oder Mikrocontroller ist völlig > unnötig. Einfach Lösungen vorstellen und den TE entscheiden lassen. Deine Lösung ist zu "kompliziert". Dazu muss er sich erstmal mit Transistoren beschäftigen. Danach mit Attiny. Den muss er noch programmieren und erstmal lernen, wie man das macht. Dazu braucht er auch noch etwas. Günstig geht irgendwie anders! ;-) Der TO sollte aber vielleicht auch mal erwähnen, wofür er das Signal braucht. Das kann die Beratung auch besser ausfallen.
H. E. schrieb: > Der TO sollte aber vielleicht... Es ist eine Sie! Über die Haarfarbe hab' ich konkrete Vorstellungen.
M. K. schrieb: > Hm, der TE hat 12V zur Verfügung, die Genauigkeit ist untergeordnet. Ich > überlege mal kurz: > > - 2 Widerstände > - 1 Kondensator > - 1 Z-Diode (3.3 V z.B.) > - 1 Transistor > - 1 Attiny45 (z.B.) > > 1 Widerstand und Z-Diode um die 12 V des TEs auf eine Spannung für den > Attiny zu bringen, 1 Widerstand und Transistor als Pegelwandler, > Kondensator für den Attiny zum abblocken. > IMO ist das ein überschaubarer Aufwand. Geht auch sicher anders (z.B. > mit dem NE555), keine Frage. Aber ehrlich gesagt glaube ich nicht, dass > sich das groß unterscheidet. > > Diese ganze Gebashe von wegen Analog oder Mikrocontroller ist völlig > unnötig. Einfach Lösungen vorstellen und den TE entscheiden lassen. Für den TO viel zu kompliziert. Spannungsstabilisierung über eine Z-Diode. Dann musst Du schon die komplette Schaltung liefern, inkl. Bauteilewerten. Dazu müsste man aber auch mehr darüber erfahren wie das Signal belastet wird, da ist die Z-Diodenstabillisierung schnell überfordert. Der TO ist mit Beiden Varianten überfordert, egal ob Attiny oder 555. Um das Problem mit Quarz und Teiler zu lösen erst recht... Zum 555 finden sich aber Berechnungsbeispiele im Internet. Route 6. schrieb: > Es ist eine Sie! Sicher?
:
Bearbeitet durch User
H. E. schrieb: > Deine Lösung ist zu "kompliziert". Immerhin ist es eine Lösung. H. E. schrieb: > Dazu muss er sich erstmal mit > Transistoren beschäftigen. 1. Es ist eine 'sie' 2. Das muss man bei der Analog-Lösung auch, also sich mit den Bauteilen/ der Schaltung beschäftigen. H. E. schrieb: > Danach mit Attiny. Den muss er noch > programmieren und erstmal lernen, wie man das macht. Dazu braucht er > auch noch etwas. Ja, aber das Wissen kann man später weiter einsetzen. Gilt für die Analog-Lösung genauso. Zeit muss man halt in beide Zweige investieren. Jörg R. schrieb: > Zum 555 finden sich aber Berechnungsbeispiele im Internet. Zum Attiny, Transistoren und Z-Dioden aber auch ;) Jörg R. schrieb: > Spannungsstabilisierung über eine > Z-Diode. Dann musst Du schon die komplette Schaltung liefern, inkl. > Bauteilewerten. Dazu müsste man aber auch mehr darüber erfahren wie das > Signal belastet wird, da ist die Z-Diodenstabillisierung schnell > überfordert. Transistor und Attiny ziehen zusammen keine 5 mA (Tiny auf 1 MHz lassen, Werkseinstellung sprich erst gar nicht mit den Fuses beschäftigen, Transistor mit 1 mA Basisstrom, stellt ca. 100 mA Laststrom zur Verfügung. Ob das genügt weis nur die TE). Die Z-Dioden-Stabilisierung hier passend hinzustricken ist kein Problem wenn man sich erst mal mit der Z-Dioden-Stabilisierung beschäftigt hat. Schaltungsvorschlag im Anhang, Werte nur grob übern Daumen geschätzt, für genauere Werte sollten auch die Anforderungen spezialisiert werden. Programm des Attiny könnte wie folgt aussehen:
1 | #include <avr/io.h> |
2 | |
3 | int main(void){ |
4 | // Ausgang definieren
|
5 | DDRB |= (1 << PB1); |
6 | // System-Clock Prescaler einstellen auf 64: 1 MHz / 64 = 15625 Hz
|
7 | CLKPR = (1 << CLKPCE); |
8 | CLKPR = (1 << CLKPS1)|(1 << CLKPS2); |
9 | // Timer einstellen: Invert Phase Correct PWM, TOP = OCR0A, Prescaler auf 1024 => Clock Timer = 15.259 Hz
|
10 | OCR0A = 76; // nach ca. 9.96 Sekunden ist der Timer durch (hoch und runter gezählt) => ca. 0.1004 Hz |
11 | OCR0B = 72; // nach ca. 9.44 Sekunden wird PB0 umgeschaltet => ca. 94.73% |
12 | TCCR0A |= (1 << COM0B1)|(1 << COM0B0)|(1 << WGM00); |
13 | TCCR0B |= (1 << WGM02)|(1 << CS02)|(1 << CS00); |
14 | |
15 | for(;;){ |
16 | // Main Loop
|
17 | // hier kann man noch andere lustige (und unlustige) Dinge machen
|
18 | }
|
19 | // hierher kommt man nie
|
20 | return 0; |
21 | }
|
Ist schon recht spät, Programm kann kleine Fehler enthalten, müsste aber so wie in den Comments beschrieben funktionieren wenn ich mich nicht irgendwo vertan hab. Jörg R. schrieb: > Der TO ist mit Beiden Varianten überfordert, egal ob Attiny oder 555. Um > das Problem mit Quarz und Teiler zu lösen erst recht... Irgendwomit muss man anfangen. Wenn man immer nur das macht, was man kann, wird man nie weiter kommen. H. E. schrieb: > Der TO sollte aber vielleicht auch mal erwähnen, wofür er das Signal > braucht. Das kann die Beratung auch besser ausfallen. Besser noch: Sie sollte mal erzählen, welche Aufgabe gelöst werden soll. Vielleicht ist der komplette Ansatz nicht sehr klug gewählt. Da wir aber auch das nicht wissen bleibt uns Konstruktiven nur die Möglichkeit einen Lösungsweg aufzuzeigen, der das gewünschte Signal generieren kann. Ich habe das jetzt auch inclusive Schaltung und Programm getan.
:
Bearbeitet durch User
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.