Hi. Ich bin komplett neu in der Sparte der Microcontroller und hab deswegen keine Ahnung welchen Microcontroller ich am besten für ein Projekt, welches ich von der Schule aus zu machen habe, verwenden soll. Gesucht wäre ein Microcontroller welcher mit den folgenden Voraussetzungen etwas anfangen kann. ---- Es soll ein elektronischer-Melodigong entworfen werden... Hierfür würde ich nun eben gerne einen Microcontroller verwenden, doch wie bereits beschrieben bin ich in diesem Gebiet komplett neu. Vorraussetzungen: • Batteriebetrieb des Geräts • Einschalten und Start über einen Taster (Gong bleibt nur solange in Betrieb, wie der Taster gedrückt wird) • mindestens 2 unterschiedliche Töne • digitale Ablaufsteuerung mit mindestens 4 Schritten (ev. mit automatischer Wiederholung) • Anzeige des jeweils gewählten Tones durch verschiedenfarbige LEDs • Wahl der Melodie über Jumper Zusatfunktionen: • mehr unterschiedliche Töne; • Selbsthaltefunktion der Stromversorgung (nur kurzer Tastendruck reicht aus, ganze Tonfolge wird abgespielt) • Kurzzeitiges Loslassen des Tasters startet Alternativmelodie ...Das wären die Punkte meiner Aufgabenstellung. Nun eben die Frage: Mit welchem Microcontroller kann ich all diese Features realiesieren? Würde mich über rasche Hilfe sehr freuen. Mfg. Patrick
Das passt mit ordentlich Luft locker in einen ATtiny13 rein. Die ganzen Verzögerungszeiten kann man ruhig mit delays im Programmcode erreichen, für die Töne nimmt man dann doch besser den Timer0 im CTC-Modus. Ich hab auf ähnliche Weise vor ein paar Wochen einen Kühlschrankalarm gebaut. PS: Der Tiny13 oder der Tiny13A lässt sich noch bequem in C programmieren. Billig ist er auch...
Ich vermute mal diesen "Gong" realisierst du mit einem Buzzer? Ganz spontan fällt mir da der PIC16F887 ein. Vermute mal, für dein Vorhaben wird der Controller natürlich um einiges zu gross sein... Falls du allerdings später vor hast auch selber andere Dinge zu Programmieren, kann der uC nicht schaden. Preislich gesehen dürfte er auch nur 2-3 Euro teurer sein als die kleinen 18 PIN uC's. Ich habe dir im Anhang mal eine kleine Schaltung beigelegt. Diese funktioniert mit einer 100 % sicherheit (Die Schaltung ist auf meinem selbst entickelten Dev. Board und wurde oft genug getestet!) Das RB0 Teil sieht bisschen reingebastelt aus, liegt daran dass auf meinem Board eigentlich noch ein DIP-Switch zwischen uC und dem Summer liegt, der tut aber nichts zur Sache. Für weitere fragen stehe ich dir gerne zur Verfügung. Hoffe ich konnte bisschen weiterhelfen. :)
Das ging ja wirklich rasch :D Ich danke dir vielmals Joachim ^^. Werd mir den heute sobald ich daheim bin gleich mal bestellen. Dankeschöön
Patrick Sch. schrieb: > Mit welchem Microcontroller kann ich all diese Features realiesieren? Grundsätzlich ist diese Aufgabenstellung nicht sehr kompliziert. Deien Anforderung ist also zur Not erfüllbar mit jedem uC, der mindestens 3 Beine hat (2 * Spannungsversorgung und 1 für Data in/out - <software OneWire>) "bequemer" geht es natürlich, wenn du was "bekanntes" nimmst, insbesondere einen Controller, welcher schon/noch genügend freie Beinchen hat für deine Eingabe- und Ausgabeaktionen. Wenns "einfach" sein soll: Schnapp dir das "Pollin Spiel" (google mal hier im Forum nach desem Begriff) http://www.pollin.de/shop/dt/MTU4OTgxOTk-/Bausaetze_Module/Bausaetze/Bausatz_Pollin_Spiel_I.html Das hat schon die notwendige Hardware incl. Piepser, LED, Taster dabei, und ließe sich ohne großen Aufwand für deinen Zweck "umbauen". Wenn du jedoch noch Hardware (Platine etc) selber machen möchtest, dann kannst du auch Einzelkomponenten nehmen, und dir was auf Lochraster zusammen löten. Der für dich/euch "unbekanntere" Teil wird vermutlich die Software-Seite sein.
Elolehrling schrieb: > Das RB0 Teil sieht bisschen reingebastelt aus Warum ein Emitterfolger? Warum nicht Kollektorschaltung? Patrick Sch. schrieb: > Werd mir den heute sobald ich daheim bin gleich mal bestellen. Hast du auch ein Programmieradapter dafür? Tipp: Bestell dir gleich ein paar davon. Hühnerfutter und Spannungsregler etc nicht vergessen!
Wegstaben Verbuchsler schrieb: > Wenn du jedoch noch Hardware (Platine etc) selber machen möchtest, dann > > kannst du auch Einzelkomponenten nehmen, und dir was auf Lochraster > > zusammen löten. Genau dies ist der Fall... (Leiterplatte, Gehäuse....) muss alles selbst entworfen werden^^ Wegstaben Verbuchsler schrieb: > > Der für dich/euch "unbekanntere" Teil wird vermutlich die Software-Seite > > sein. Softwaremäßig dürfte ich da keine Probleme haben. Da wie schon erwähnt wurde der uC mit einfachem C programmierbar ist.
Joachim минифлоть schrieb: >> Das RB0 Teil sieht bisschen reingebastelt aus > > > > Warum ein Emitterfolger? Warum nicht Kollektorschaltung? Weil es absolut keine Rolle spielt... Ob du den Buzzer nun an den Kollektor hängst, oder an den Emitter, in dieser Schaltung würde es keinen Unterschied machen. Zudem wird das Dev. Board von unseren lehrlingen im 1. Lehrjahr gefertigt. Die wissen kaum, wie ein Transistor funktioniert... und mein Lehrmeister war der meinung, wenn der Buzzer am Emitter hängt, sei es einacher zu erklären. Und da in der heutigen Zeit nunmal "Der Chef hat immer recht" gilt, hängt das teil nun am Emitter.
Patrick Sch. schrieb: > mit einfachem C Einfach? je nachdem. Wenn du schon C am PC gelernt hast, wird dir der Einstieg in die µC-Welt mit C auch gut gelingen. Wenn du noch kein C "kannst" und dich einfach so auf meinen Ratschlag verlässt, nicht. Wichtig ist, wenn du schon C-Erfahrung hast, vor allem: * Register und Bitfummelgeschichten http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Zugriff_auf_Register http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Zugriff_auf_IO-Ports * Timer http://www.mikrocontroller.net/articles/AVR-Tutorial:_Timer * Das Programm läuft in einer Endlosschleife oder bleibt in einer solchen hängen Sonst einfach hier fragen stellen. mf
Elolehrling schrieb: > in dieser Schaltung würde es > keinen Unterschied machen. Der Buzzer bekommt in Kollektorschaltung zumindest im Einschaltmoment ca. 0,6V mehr Spannung. Elolehrling schrieb: > wird das Dev. Board von unseren > lehrlingen im 1. Lehrjahr gefertigt. Die wissen kaum, wie ein Transistor > funktioniert. Ist das kein Grund oder Anlass, ihnen beiläufig was darüber zu erzählen? Dabei kann man sich gleich ein Bild von der Interessenlage der Leute machen.
(Ich war msl o frei und habe mich mal eingloggt, bin nach wie vor Elolehrling) Joachim минифлоть schrieb: > Der Buzzer bekommt in Kollektorschaltung zumindest im Einschaltmoment > > ca. 0,6V mehr Spannung. ... und? Dieser Einschaltmoment liegt bei ein paar wenigen uS, sowas wird kein Mensch merken. Sobald das Teil mal läuft ist der Unterschied evtl. noch knapp bei 100mV. Auf die kommts nun auchnicht mehr wirklich draufan. Joachim минифлоть schrieb: > Ist das kein Grund oder Anlass, ihnen beiläufig was darüber zu erzählen? > > Dabei kann man sich gleich ein Bild von der Interessenlage der Leute > > machen. Schon richtig, allerdings kann ich schlecht etwas ändern wenn es so von mir verlangt wird.
Marc Liechti schrieb: >> Der Buzzer bekommt in Kollektorschaltung zumindest im Einschaltmoment >> >> ca. 0,6V mehr Spannung. > > ... und? Dieser Einschaltmoment liegt bei ein paar wenigen uS, sowas > wird kein Mensch merken. Sobald das Teil mal läuft ist der Unterschied > evtl. noch knapp bei 100mV. Auf die kommts nun auchnicht mehr wirklich > draufan. Schon klar. Gegen den Meister hast du argumentativ keine Chance. Interessant wird es zb auch dann, wenn jemand mal statt einem 5V Summer einen 12V Summer anhängen will. Ich denke auch, dass dein Meister hier nicht klug gehandelt hat. Auch Lehrlinge im ersten Lehrjahr sollten verstehen, dass es bei einem Summer keinen Unterschied macht, ob man ihm die Leitung zur Versorgungsspannung schaltet oder die zur Masse. Geschlossener Stromkreis ist geschlossener Stromkreis.
Dass es keinen Unterschied macht wird ihnen schon erklärt, das ist nicht das Problem. Nur ist der Stromkreis fürs erste einfacher zu erklären, wenn der Verbraucher am Emitter hängt. (Zumindest habe ich das damals im ersten Lehrjahr so empfunden.) In derBerufsschule haben wir erst im zweiten Lehrjahr mit Transistoren begonnen, das Board müssen die 1. Lehrjahr Lehrlinge allerdings in 3 Wochen fertig. (Überbetrieblicher Kurs Fertigungstechnik) Es geht bei der ganzen Sache noch nichteinmal darum, dass sie die komplette Schaltung verstehen, schliesslich werden sie das board frühsten im Sommer 2013 benutzen können. Es geht in paar Wochen lediglich um die fertigung. Aber darum geht es ja in diesem Thema hier garnicht. Da der Treadersteller offensichtlich das Programm mit C schreiben will, weiss ich nicht ob folgendes hilfreich ist, aber evtl. ist es dir eine Hilfe wenn du einen Teil meines Assembler Codes hast, wie ich den Buzzer bediene: Erzeugen eines Tones:
1 | movlw .4 |
2 | movwf Ton ; Dieser Wert bestimmt die Frequenz des Tones |
3 | movlw .25 |
4 | movwf Laenge ; Dieser Wert bestimmt die Länge des Tones |
5 | call Soundmachine |
Abspielen des Tons:
1 | Soundmachine |
2 | |
3 | delayTon |
4 | clrf TMR0 |
5 | delay100us |
6 | movf TMR0,w |
7 | xorlw .3 |
8 | btfss STATUS,Z |
9 | goto delay100us ; 100uS delay |
10 | |
11 | incf ZeitA ; Nach 100uS zählt ZeitA +1 |
12 | movlw .100 |
13 | xorwf ZeitA,0 |
14 | btfss STATUS,Z ; Wenn ZeitA =/= 100 ist (100*100uS = 10ms) |
15 | goto skip1 ; wird direkt nach skip1 gesprungen. |
16 | incf ZeitB ; Falls ZeitA = 100 wird Zeit B inkrementiert, |
17 | clrf ZeitA ; ZeitA wieder auf 0 gesetzt und danach nach |
18 | ; nach skip1 gesprungen. |
19 | skip1 |
20 | banksel PORTA ; Wenn Schalter 3 nicht mehr gedrückt ist |
21 | btfsc Schalter3 ; wird das Unterprogramm beendet. |
22 | goto Hauptprogramm ; (Das Programm kann zu jedem Zeitpunkt beendet werden.) |
23 | |
24 | movfw Laenge |
25 | xorwf ZeitB,0 |
26 | btfss STATUS,Z ; Wenn ZeitB =/= der gewünschten Länge des Tones ist |
27 | goto skip2 ; wird nach skip2 gesprungen. |
28 | clrf ZeitB ; Sonst wird ZeitB wieder auf 0 gesetzt |
29 | return ; und der nächste Ton wird in der |
30 | ; Buzzer-Mainroutine geladen. |
31 | skip2 |
32 | incf cntxus |
33 | movfw Ton |
34 | xorwf cntxus,0 |
35 | btfss STATUS,Z ; Wenn die Dauer für die Tonfrequenz erreicht ist |
36 | goto delayTon |
37 | |
38 | clrf cntxus ; Wird die Countervariable der Tonfrequenz gelöscht |
39 | movlw b'00000001' ; Und durch Ein- und Ausschalten des Buzzers |
40 | xorwf PORTB ; der bestimmte Ton erzeugt. |
41 | goto delayTon |
Mir ist klar, dass der Code nicht unbedingt viel sinn ergibt, wenn man nicht den kompletten Code hat, allerdings ist es ja nicht mein Ziel, den Code für ihn zu schreiben, sondern lediglich ihm ein paar Anhaltspunkte zu geben. Vielleicht kannst du ja etwas damit anfangen.
Joachim минифлоть schrieb: > Einfach? je nachdem. Wenn du schon C am PC gelernt hast, wird dir der > Einstieg in die µC-Welt mit C auch gut gelingen. Wenn du noch kein C > "kannst" und dich einfach so auf meinen Ratschlag verlässt, nicht. seit 2 Jahren am C Programmieren ^^ ... Das werd ich schon iwie hinbekommen. PS: Die anderen Kommentare werd ich mir dann daheim durchlesen^^ (Doppelposts erlaubt???)
Am besten du verwendest den Atmega 8 ist für Anfänger der beste Controller. Er ist etwas größer, aber man kann sehr gut messen. Ein bisschen C-Code zur Tonerzeugug:
1 | while(1) // Endlosschleife |
2 | {
|
3 | // Ausgang auf 1 setzen
|
4 | _delay_ms(periodendauer/2) |
5 | // Ausgang auf 0 setzen
|
6 | _delay_ms(periodendauer/2) |
7 | }
|
florian schrieb: > Ein bisschen C-Code zur Tonerzeugug: >
1 | > while(1) // Endlosschleife |
2 | > { |
3 | > // Ausgang auf 1 setzen |
4 | > _delay_ms(periodendauer/2) |
5 | > // Ausgang auf 0 setzen |
6 | > _delay_ms(periodendauer/2) |
7 | > } |
8 | >
|
Aber Vorsicht, periodendauer muss zur Compilezeit bekannt sein!
Joachim минифлоть schrieb: > Ich hab auf ähnliche Weise vor ein paar Wochen einen > Kühlschrankalarm gebaut. hab ich notgedrungenderweise auch.... mein letzter tiefkühler hat sich einfach sang und klanglos durch kompressordefekt verabschiedet. ne ganze ernte zum teufel. mach grad die platinen fertig. da mir programmkenntnisse gänzlich fehlen hab ich nen atmega32 als sps benutzt. mit und, oder, nicht kann ich aber umgehen. die sps kann ich per eagle graphisch programmieren. irgendwelche programmierkenntnisse sind nicht von nöten. ne logo ginge auch ist mir aber deutlich zu teuer. hab n 2*16 display mit temp anzeige und uhr, ne led zeile als schnellanzeige und nen krachmacher wenn´s zu warm wird ( per taste stumm zu schalten) den krachmacher hab ich allerdings als hardware realisiert da die sps am digi port nur frequenzen bis 100hz erzeugen kann. zum langsammen takten ist es aber gut geeignet. wie hast du den wächter realisiert? mfg
dolf schrieb: > wie hast du den wächter realisiert? Hatte hier ein viel banaleres Problem: Die Kühlschranktür bleibt bisweilen offen, ohen dass mans richtig sieht(Einbaukühlschrank). Die Lampe heizt dann noch zusätzlich das oberste Fach. Als dann wieder mal die Butter fast geschmolzen war, kam ein Alarm dran, der nach einer bestimmten Zeit losgeht, wenn die Tür auch noch einen klitzekleinen Spalt offensteht. Das mit der Temperaturüberwachung kann ja trotzdem noch dazugefriemelt werden :)
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.