Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: Das Wettringer Modellbauforum. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

31

Dienstag, 19. Juli 2016, 01:37

Hallo Maik,

die Geschmäcker sind verschieden. Das ist gut so.
Eine schwarze Platine bringt die Bauteile - gerade in einem beleuchteten Gehäuse - besser zur Geltung.
Vor der Bestückung:
Oberseite: Einfach mit Abtönfarbe rollen.
Lötseite: Die zu benutzenden Lötpunkte einölen, dann wie die Oberseite rollen. Auf dem Öl hält die Abtönfarbe nicht.
Nach Trocknung einfach über ein Stück Stoff reiben: -> Lötkontakte frei. Evtl. Glasfaserstift benutzen.

Eval-Board: Ich kenne diese Probleme... :motz:
Diese werden wir bei unserem Projekt nicht haben.
Ich glaube, ich hab da selbst etwas falsch eingebracht:
Auf meinem EVAL-Board zur probe aufgesteckte Controller arbeiten mit "realer" Logik, nehme ich sie jedoch herunter und setze sie mit dem (auf dem Board korrekt funktionierenden) Programm auf das Endboard, dann sind die Funktionen dort invertiert.
Im Klartext: Schreibe ich in BASCOM den Code so, dass bei "1" auch der Port logisch "1" ist, dann ist er in der finalen Schaltung leider logisch "0".
Ärgert mich ein wenig, besonders dann, wenn ich die Ausgänge mit einer PWM "takten" möchte. Statt einem ausgeschalteten Ausgang einfach logisch "0" zuzuweisen, muss ich stets von 1023 abwärts zählen - und das ist dann doch ein wenig irritierend... ;)
Hast Du Dir mal die Polung der LEDs auf Eval-Board und unserem Schaltplan für das Steckbrett angeschaut?
PWM kommt noch. Aber später.
Langsam, junger Padawan!
Bei mir gab es Anfangs ein paar Probleme, eine Verbindung über USB mit dem Board herzustellen. Es dauerte doch eine kleine Weile, bis ich dahinter kam, dass ich mit der Installation des USB-Treibers auch den dazu gehörigen Port fest in das Programm eingebrannt hatte. Bedeutet: Ich kann mein Board lediglich über den USB-Port ansprechen, über welchen die Urinstallation ablief. Zur Umdefinierung wäre eine Neuinstallation von Nöten (nur des Treibers ^^).
Den Port fest in das Programm einzubrennen, ist mir ein Rätsel. In Bascom stellst Du ein, wie und von welchem Port oder Gerät die ISP stattfinden soll. Da steht nix im Code!
Da mir BASCOM selbst keine große Hilfe beim Herstellen einer Verbindung zum Board war, habe ich "AVR-STUDIO 4" zusätzlich installiert. Mit dem Programm ist es einfacher, auf das Board zuzugreifen, es bietet aber auch einige andere Features.
Die wichtigsten beiden sollten sein:
- Brennen der Fuses und Lock-Bits, womit hardwareseitig auch die richtige Grundfrequenz in den Controller eingebrannt werden kann (1MHz + 64µs mit internem Oszillator, wenn ich mich nicht irre)
- Direktes Brennen der Programme und HEX-Files, Löschen des Flash und EEProm
Das brauchst Du nicht. Fuses et al. werden im nächsten "offiziellen" Post behandelt. Da bohren wir den Tiny auf 8 MHZ auf. Mit der Bascom-Demo.

LG
Mathias

Zu Hülf' - meine Kugel ist umgefallen!

Heisenberg bei einer Radarkontrolle:
Polizist: "Wissen Sie, wie schnell Sie waren?"
Heisenberg: "Nein. Aber ich weiß genau, wo ich jetzt bin!"


32

Mittwoch, 20. Juli 2016, 05:31

Inhaltsverzeichnis

Hallo Modellbaufreunde,

wie schon angekündigt, habe ich im Startpost ein Inhaltsverzeichnis der "offiziellen" Projektposts mit entsprechenden Links angelegt.
So können wir prima auch einmal abschweifen, ohne den Überblick zu verlieren.
Einen Ausblick auf die schon vorbereiteten nächsten Posts findet Ihr auch im Inhaltsverzeichnis :D

Viele Grüße
Mathias

Zu Hülf' - meine Kugel ist umgefallen!

Heisenberg bei einer Radarkontrolle:
Polizist: "Wissen Sie, wie schnell Sie waren?"
Heisenberg: "Nein. Aber ich weiß genau, wo ich jetzt bin!"


33

Mittwoch, 20. Juli 2016, 07:36

"Hausaufgaben"

Hallo Modellbaufreunde,

seit dem letzten "offiziellen" Post geben wir Euch am Ende des Posts als
"Aufgaben/Spielereien"
"Hausaufgaben" auf.
Berichtet darüber!
Falls nötig, werden wir weitere Erklärungen geben.
Der Thread ist eine Dialog-Zone. Berichtet auch über eigene Ideen, die Ihr probiert habt.
Egal ob mit oder ohne Erfolg.
Wer nicht fragt, bleibt dumm und wer sein Wissen nicht teilt, ist ein Egoist.
Meine persönliche Einstellung.

Viele Grüße
Mathias


Zu Hülf' - meine Kugel ist umgefallen!

Heisenberg bei einer Radarkontrolle:
Polizist: "Wissen Sie, wie schnell Sie waren?"
Heisenberg: "Nein. Aber ich weiß genau, wo ich jetzt bin!"


Elektron

unregistriert

34

Donnerstag, 21. Juli 2016, 19:23

Naja, "wer nicht fragt, bleibt dumm" lockt keinen hinter dem Ofen hervor, Matze... ^^
Das kann auch falsch verstanden werden.

Aber ich mach mal den Anfang:

Mit den Microcontrollern fing ich eigentlich nur an, weil sich meine Frau einen RC-Raddampfer wünschte. Da dieser eine "lebendige" Optik mit sequenziell geschalteten Kabinenbeleuchtungen bekommen sollte, legte ich mir ein Board und Controller zu. An einigen Stellen holte ich mir Rat in Foren ein, ansonsten biss ich mich allein durch.

Mit den ersten Erfahrungen baute ich meine Erfahrungen Stück für Stück aus, machte zwischendurch auch längere Pausen, um alles "sacken" zu lassen.
Aber in den Jahren lernte ich sehr viel, darunter
- sequenzielle "Led-Orgeln"
- Led-Dimmung
- vollautomatische Tag-/Nacht-Dimmung mit Fototransistor (einstellbar)
- Servo-Steuerung
- Auslesen der PWM-Kanäle einer Fernsteuerung
- "Umkehren" von PWM-Signalen durch Umleiten des Empfänger-Ausgabesignals durch den Mikrocontroller
- RGB-Mehrfarbsteuerung (LED-Streifen)
- Spannungsmessung (z.B. Zellenspannung eines Lipo-Akkus) und entsprechende Ausgabe
- Ansteuerung von LCD-Display's

Mein nächstes Mini-Projekt ist eine ganz simple Blinker-Steuerung. Ich bastel gerade einen großen Fahrrad-Anhänger mit Einzelradaufhängung, Stoßdämpfern und Stabilisator - und der bekommt auch Licht verpasst. Der Controller regelt dann vordergründig das Rücklicht (schaltbar, später automatisch per Foto-Transistor =) ), Bremsleuchten und die Blinker. Dazu muss ein Kabelbaum im Fahrrad vcerlegt werden. Am Lenker dann 2 Boxen, eine für den Blinker-Fahrtrichtungsschalter, die andere als "visuelle Rückmeldung" für mich, damit ich weiß, dass der Blinker oder die Bremse aktiv sind.

Zu guter Letzt eventuell noch eine elektrische "Hupe" über einen Lautsprecher.


LG - Maik

35

Freitag, 22. Juli 2016, 00:47

Hallo Maik,

statt "dumm hätte ich vielleicht "unwissend" schreiben sollen. Googeln ist auch Fragen stellen. Meine Mitarbeiter haben das immer richtig verstanden: Kommunikation ist extrem wichtig.
Mir würde nie einfallen, jemandem "einfach so" öffentlich auf die Füße zu treten.

Micha und ich sind froh, dass Du nicht nur den Thread verfolgst, sondern Dich aktiv mit einbringst!

Ich selbst bin Wiedereinsteiger bei Bascom - eine Pause, so lang, dass die noch gespeicherten .bas Dateien auf der neuesten Demo nicht mehr liefen. :(
PWM, also LED-Dimmung bzw. Ansteuerung von (einfachen) RGB-Stripes oder RGB-LEDs kommt noch.
Die Tag-/Nacht-Dimmung bzw einen Dämmerungsschalter hatte ich als mögliches Projekt angedacht; allerdings mit Fotowiderstand am ADC des Mega8. Da könnten wir uns mal austauschen.
Servo-Steuerung kommt mit Sicherheit, "Servo" ist wie auch "Sensor" als Thread-Tag gesetzt.
RC-Anwendungen sind auch vorrätig (aus der Ecke komme ich eigentlich her), sind aber in diesem Forum wahrscheinlich nicht höchste Priorität.
LCD-Displays: Sowohl im Bus- als auch im I2C-Modus supereasy wie Port-Expander und Ähnliches. Interessant, um Infos auszugeben; Priorität m. E. eher niedrig. Bei Bedarf wird es natürlich einen Post darüber geben.

Zu Deinem nächsten Projekt:
Feine Sache!
Für die Blinker würde ich auf beiden Seiten des Lenkers selbstrückstellende Wippentaster montieren.
Warum?
Weil Du als Fahrradfahrer immer noch zum Hand-/Armzeichen verpflichtet bist. Oder wurde das geändert?
Den Fototransistor oder -widerstand würde ich auch dazu "verdonnern", die Rückmeldungs-LEDs bei Dunkelheit abzudimmen, sonst blenden die oder Du erkennst sie bei Sonnenlicht nicht.
Als Hupe ein gepulster Piezo-Buzzer; braucht wenig Leistung & ist laut. Eher schwer spritzwassergeschützt zu montieren.
Das Ganze an einer LiPo-Zelle mit "Schwächel-LED". Den Akku könntest Du mit einer Solarzelle tagsüber nachladen.

Dann brauchst Du eigentlich nur noch die Zulassung gem. StVZO...

Viele Grüße
Mathias

P.S. Nenn' mich nie wieder "Matze". :!!

Zu Hülf' - meine Kugel ist umgefallen!

Heisenberg bei einer Radarkontrolle:
Polizist: "Wissen Sie, wie schnell Sie waren?"
Heisenberg: "Nein. Aber ich weiß genau, wo ich jetzt bin!"


Elektron

unregistriert

36

Freitag, 22. Juli 2016, 12:58

Hey Mat...hias :lol: :ok:

Zulassung - glaube, dass das schwierig wird ;).
Aber mit einer installierten und funktionsfähigen Richtungsanzeige am Fahrrad würde ich mir den Arm so schnell nicht mehr ausrenken ;) - doppelte Richtungsanzeige ist doch unsinnig... und wenn ein Autofahrer die Blinker nicht sieht, muss er wohl doch mal zum Onkel Doktor gehen... ^^

Das Nachladen des Akkus per Fotozellen - muss nicht zwingend sein. Schwächelanzeige hingegen schon.
Zunächst ist aber nur geplant, die Blinker am Wagen zu installieren, Fahrrad folgt später. Selbstrückstellung wird eher schwierig, da die Lenkwinkel-Einschläge in der Regel so gering sind, dass der Blinker vermutlich ausgehen würde, sobald man mit dem Rad aus dem Stand losfährt. Bei Motorrädern ist das in der Regel auch nicht anders.

Der Fototransistor war sehr zuverlässig. Ich musste lediglich einen Strom-Bypass an den ADC-Eingang (für alle Anderen - Analog-/Digital-Converter) legen, strombegrenzt durch einen 1M-Ohm-Widerstand ^^


LG - Maik

37

Freitag, 22. Juli 2016, 20:02

Hallo Maik,

für Dein Projekt habei ich vorher gegoogelt - damit ich nicht "dumm" bleibe :abhau:

Eine Stichprobe zeigte, dass ein kommerziell vertriebenes Produkt nur für "Oldtimer-Fahrräder" verkauft wird und die Zulassung gem. StVZO nicht besitzt.
Ich wollte nur auf die rechtliche Situation aufmeksam machen. Im Schadensfall ist der ohne Zulassung immer schlechter dran; wie beim getuneden Auto.

"Selbstrückstellende Wippentaster" ist doppelt gemoppelt; ich meinte solche, wie man sie z. B. an el. Scheibenhebern im Auto findet.

Zum Fototransistor: Hättest Du da ein Schaltbild?

Viele Grüße
Mathias

Zu Hülf' - meine Kugel ist umgefallen!

Heisenberg bei einer Radarkontrolle:
Polizist: "Wissen Sie, wie schnell Sie waren?"
Heisenberg: "Nein. Aber ich weiß genau, wo ich jetzt bin!"


Elektron

unregistriert

38

Freitag, 22. Juli 2016, 21:33



Der von mir (gern) genutzte Fototransistor ist ein SFH300


LG - Maik

39

Samstag, 23. Juli 2016, 01:07

Hallo Maik,

das Schaltsymbol kannte ich schon...
Ich meinte ein Schaltbild/Beispiel am µC.

Im Fall des Fotowiderstands hätte ich einen klassischen Spannungsteiler am ADC aufgebaut, der nicht zu häufig abgefragt wird und bei einem bestimmten ADC-Wert dann mit einem anderen Pin/Unterprogramm Nachtschaltung etc. aktiviert.

Fühlbare Taster: Teichfolie!


LG
Mathias

Zu Hülf' - meine Kugel ist umgefallen!

Heisenberg bei einer Radarkontrolle:
Polizist: "Wissen Sie, wie schnell Sie waren?"
Heisenberg: "Nein. Aber ich weiß genau, wo ich jetzt bin!"


Elektron

unregistriert

40

Samstag, 23. Juli 2016, 12:40

Hey Mathias,

"Teichfolie"? Müsste ich kaufen. In der Regel verwende ich Dinge, die ich schon im Bestand habe, Teichfolie zählt nicht dazu ;).
Bei damaligen Projekten machte ich das auf eine ähnliche Art und Weise, nur dass ich im Kunststoff "Lamellen" als Taster ausarbeitete.


LG _ Maik

Beiträge: 1 183

Realname: Wilfried Hoffmann

Wohnort: Braunschweig

  • Nachricht senden

41

Samstag, 23. Juli 2016, 21:53

Hallo Mathias, hallo Micha,
hier kommt meine Vollzugsmeldung für den Post 4.

Endlich haben alle Teile, die in der Auflistung vorhanden waren, den Weg auf meinen Schreibtisch gefunden.



Zusätzlich habe ich mir noch eine Sortierbox gegönnt, damit nicht alles so lieblos in eine Kiste geworfen wird.



Nun zum eigentlichen Nachbau.

Hierbei habe ich einige wichtige Anmerkungen für alle anderen Mitbauer.
Sie sind zur besseren Erkennbarkeit alle farblich markiert.
Es muss ja nicht jeder die selben Fehler machen.


Zuerst ging es an die Fertigung des Adapters.
Das Belegungsbeispiel mit dem LED-Test war sehr hilfreich.
Lediglich die Wannenstecker wiesen bei mir keinerlei Pinmarkierung auf.
Also auf die Ausparung des Wannensteckers achten!

Die Litzenenden habe ich allerdings etwas anders bestückt.
Die Stiftleisten waren mir etwas zu dick und ich habe befürchtet, dass die Kontaktbuchsen des Steckbretts ausleiern.
0,5er Schaltdraht schien mir zu locker.
Die Anschlußbeine eines Widerstandes (0,6mm) gingen leicht einzustecken und hielten deutlich besser.
Also mussten sich 3 Widerstände aus der Grabbelkiste für die gute Sache opfern.

Zuerst anlöten . . .



Dann ablängen und mit Schrumpfschlauch überziehen.
Damit lassen sich die Enden besser anfassen.



Da ich nicht jedesmal nachsehen möchte, welcher Anschluß welche Farbe hat, wurden die Enden mit kleinen Tesaschildchen versehen.



Nun ein wichtiger Hinweis zum Steckbrett, daß es in den unterschiedlichsten Ausführungen gibt.
In Gegensatz zum Steckbrett von Mathias sind die Kontaktspalten bei mir NICHT durchgängig verbunden, sondern in 3 Bereiche
unterteilt.
Ich habe mir die verbundenen Bereiche dann auf dem Brett farblich markiert.
Also überzeugt euch bitte vor der Benutzung eures Steckbretts von den entsprechenden Kontaktverbindungen innerhalb des Steckbretts.
Irgendwann sucht ihr euch sonst den Wolf nach einem Steckfehler, der gar keiner ist.




Die seinerzeit im Job von mir betreuten User habe ich immer wieder vor übereiltem Aktionismus gewarnt und folgende Vorgehensweise gepredigt:

1. Arbeits- bzw. Ablaufanweisung lesen
2. dieselbige verstehen – sonst nochmal lesen
3. erst dann mit der Umsetzung beginnen.

Das habe ich vor lauter Begeisterung, nun endlich mit den erhaltenen Teilen loslegen zu können, selbst nicht beachtet und bin damit in eine böse Fehlerfalle getappt. :bang:
Wenn man die BASCOM-Software installiert, OHNE den USB-Treiber installiert zu haben, kann die Chose auch nicht funktionieren.

Nachdem der Treiber installiert war, konnte es dann auch nach Plan weitergehen.

Die Einstellungen ließen sich nach der Anweisung problemlos ändern.
Nur genau aufpassen, was in welcher .txt wann geändert wird.
Der Programmer war damit richtig eingestellt und der Haken bei Auto-Verify drin.
Nur Clock Frequeny stand nicht auf AUTO sondern auf 1kHz.
Nach Auswählen von “Auto” und “Cancel” und dem Beenden von Bascom war bei nächsten Start „Auto“ voreingestellt.
Warum auch immer – Ich habe die Auswahl ja eigentlich abgebrochen.
BASCOM scheint die Auswahl sofort zu speichern, ob ich abbreche oder nicht.

Danach ging es an die Programmierung, die allerdings auch ein paar Ungereimtheiten bei mir hinterlassen hat.

Der Quellcode sollte vom Tread in das BASCOM-Fenster kopiert werden.
Beim Markieren des Quellcodes incl. der Zeilennummern sah es folgendermaßen aus:



Im Ergebnis eine Liste Zeilennummern und dann der Programmcode.



Also habe ich ohne Zeilennummern kopiert.



Im Ergebnis dann der Programmcode ohne Zeilennummern.



Der Code hat damit trotz allem funktioniert, aber wenn man später mal einen Fehler hat, zeigt einem das Programm die fehlerhafte Zeile, aber man muss sie mühevoll auszählen.
Auch die Erklärungen zum Programm lassen sich ohne Zeilennummern nur erschwert nachvollziehen.

Vielleicht hat hierzu jemand einen Hinweis, wie man die Zeilenummern hineinbekommt.
Ich habe nichts gefunden.

Die verschiedenen Button, die im weiteren Ablauf angesprochen sind, um den Code zu prüfen und dann zu kompilieren, lassen sich durch Überfahren mit der Maus herausfinden.
Einzig das Icon „Identify Chip“ im Programmierfenster zeigt keinen Text.
Dies ist der Identify Chip-Button.



Die weiteren Aufgaben/Spielereien waren dann kein Problem mehr.
Code ändern – speichern – prüfen – programmieren – und läuft. :ok:

Für mich war es allerdings hilfreich, da ich mehrere PCs im Büro habe, die Programmiersoftware auf meinem Bastel-Laptop und auf dem anderen PC die Arbeitsanweisungen im Blick zu haben.
Und mit einem Adapter, der lang genug ist, spart man sich die USB-Verlängerung.



Die erste Erfahrung auf dem mir bisher unbekannten Terrain ist also gemacht.
Nun kann es weitergehen.

An dieser Stelle sei den beiden M&Ms auch noch einmal Dank gesagt für Ihren Anstoss des Themas. :five:
Viele Grüße
Willie

Man ist niemals zu alt, um Neues zu lernen.
Es gibt keine dummen Fragen, nur dumme Antworten.

Fertig:

VW Bus T3 – Mein erster Tourbus

In Bearbeitung:
Chevy G20 Van in 1:25 nach realem Vorbild

Fertige Projekte im Portfolio!

42

Samstag, 23. Juli 2016, 21:58

Feine Sachen, die Du da baust, Maik!

Bei der Teichfolie dachte ich an Wasserdichtigkeit. Ein Stückchen bekommst Du garantiert gratis im Baumarkt.

Die exakten Lamellenausschnitte schreien ja förmlich nach Hintergrundbeleuchtung!

Zum Fototransistor: Stimmt, Etwa das, was ich mit dem Fotowiderstand gemacht hätte. Die LEDs sind auch blendfrei. Super!
Pwmport ist ein Alias?

LG
Mathias

Zu Hülf' - meine Kugel ist umgefallen!

Heisenberg bei einer Radarkontrolle:
Polizist: "Wissen Sie, wie schnell Sie waren?"
Heisenberg: "Nein. Aber ich weiß genau, wo ich jetzt bin!"


Hubra

Moderator

Beiträge: 11 439

Realname: Michael

Wohnort: Niederdürenbach-Hain

  • Nachricht senden

43

Samstag, 23. Juli 2016, 22:17

Hallo Willie. :wink:

Schön das Du mit an Bord bist und uns mit deinem Beitrag unterstützt. :hand:

Zitat

In Gegensatz zum Steckbrett von Mathias sind die Kontaktspalten bei mir NICHT durchgängig verbunden, sondern in 3 Bereiche
unterteilt.

Das war allerdings mein Steckbrett, da ich für den Praktischen Teil zuständig bin. :lol:

Zitat

Vielleicht hat hierzu jemand einen Hinweis, wie man die Zeilenummern hineinbekommt.
Ich habe nichts gefunden.

Zu deiner Frage kann ich dir aber auch gerne weiter helfen.

Sieh mal unter Options nach und dann Compiler und anschließend Chip anklicken.
Danach erscheint folgendes Bild.


Dort klickst Du auf Environment und setzt unten links ein Häkchen auf Line numbers.
Dann erscheinen auch die Zeilennummern.

Nach dem nächsten Beitrag werde ich mich dann auch intensiv an dem Beitrag beteiligen, bisher habe ich nur die Praktischen Test im Hintergrund bearbeitet. :idee:

Gruß Micha.


Inhaltsverzeichnis aller Projekt-Posts in Post 1

44

Samstag, 23. Juli 2016, 23:26

bisher habe ich nur die Praktischen Test im Hintergrund bearbeitet. :idee:

NUR, Micha?
Nein! Stelle Dein Licht nicht unter den Scheffel!

LG
Mathias

Zu Hülf' - meine Kugel ist umgefallen!

Heisenberg bei einer Radarkontrolle:
Polizist: "Wissen Sie, wie schnell Sie waren?"
Heisenberg: "Nein. Aber ich weiß genau, wo ich jetzt bin!"


45

Sonntag, 24. Juli 2016, 02:40

Hallo Willie,

Du hast Dir wirklich viel Mühe mit Deinem Post gemacht. Ganz herzlichen Dank dafür!

Du hast Recht. 0,6 mm sind das Optimum für Steckbretter. 0,5er Schaltdraht ist deutlich häufiger und damit günstiger zu bekommen. Deshalb der "Einkaufstipp".
Dein Adapter: Wie aus dem Bilderbuch! :ok:

Zum Steckbrett: Da hast Du ein feines Exemplar! Die Unterbrechungen in den vertikalen Spannungsschienen hatte ich "unterschlagen".
Sorry. Wir werden demnächst mit verschiedenen Spannungen arbeiten: +5 V, +12 V aber auch mit -12V. Deshalb GND und nicht "Minus-Pol".
Da ist die Aufteilung sinnvoll, wenn man ein kleineres Steckbrett hat.

Spontane Idee: Spannungstester: :idee:
Kontakt --- rote Litze --- 1 kOhm Widerstand --- Anode LED --- Kathode LED --- schwarze Litze --- Kontakt
Miteinander verlöten, isolieren und Ihr könnt gefahrlos testen, wo Spannung anliegt. Auch bei +12 V. Bei -12 V steckt das rote Ende in GND und bei Kontakt mit -12 V leuchtet die LED.
Hat ja Diode gelernt. :lol:
Bei + und - 12 V könnt Ihr allerdings das seltene finale Blitzen einer sterbenden LED sehen... :(

Deine Erfahrung mit den Einstellungen: Hier muss ich eventuell nachbessern - 'zig Screenshots wollte ich mir und Euch ersparen. Schicke mir bitte Deine geänderte .xml-Datei zu.
Die "Hausaufgaben" haben geklappt? Schreibe etwas darüber!

Ich freue mich, dass sich der Erste getraut hat, hier einzusteigen! :tanz:
Willie, die M&Ms werden Dich nicht enttäuschen! :hand:

LG
Mathias

Zu Hülf' - meine Kugel ist umgefallen!

Heisenberg bei einer Radarkontrolle:
Polizist: "Wissen Sie, wie schnell Sie waren?"
Heisenberg: "Nein. Aber ich weiß genau, wo ich jetzt bin!"


46

Sonntag, 24. Juli 2016, 03:43

Hallo Modellbaufreunde,

zusätzlich motiviert von Willies Post :

"Jetzt aber was Richtiges!"

Ein vielseitig konfigurierbarer 8-Kanal Blinker. :D

Auf dem Steckbrett wurden drei bzw. sieben weitere LEDs an die Pins 13 - 15 bzw. 19 angeschlossen (im Bild sieben weitere LEDs):



Hier der Schaltplan:



Ein persönlicher Dank von Mathias:
Hier möchte ich mich bei meinem Freund Tschoeatsch aus dem Offiziellen Deutschen Bascom Forum bedanken.
Er hat netterweise alle Eagle-Schaltpläne in Windeseile gezeichnet und ggf. verändert.
Meister Hora (so wird Tschoeatsch aufgrund seiner Affinität zu Zeitmessern auch genannt), vielen lieben Dank!
Schaut Euch einmal ein paar seiner Projekte an und Ihr werdet sehen, dass nur die Fantasie eine Grenze ist:


Zurück zum Schaltplan.
Es ist sinnvoll, hier low-current LEDs zu benutzen, da der ATtiny4313 bei einer Dauerlast über 80 mA anfängt, die Öhrchen anzulegen.
Deshalb haben wir den Code erstmal nur für vier Kanäle "scharfgeschalten", falls Ihr nur 20 mA oder noch stärkere LEDs habt.
Zugegeben, das mit den 80 mA habe ich mir vor Jahren (mit anderen Mikrocontrollern) angewöhnt. Es ist einfach ärgerlich, wenn's qualmt und eigentlich kein offensichtlicher Fehler vorliegt. :nixweis:
Das Datenblatt des ATTiny4313 besagt unter dem Punkt "Absolute Maximalbelastungen / Absolute Maximum Ratings": 40 mA für einen Einzelpin und 200 mA für die ganze Schaltung.
Demnach lägen wir mit acht 20 mA LED noch innerhalb der Spezifikation.
Der ganze Code ist hier; für die vollen acht Kanäle muss nicht viel geändert werden (siehe unten).
Speichert den Code bitte unter "WM Blinker2.bas" ab.

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
'*****************************
'
'
' Blinker (8-Kanal)
'
'
'*****************************
' Hier nur 4 Kanäle für Tests auf dem Steckbrett aktiviert, da der ATtiny mehr als 80 mA nicht mag
' PortB.x -- 1k -- Anode LED -- Kathode LED -- GND. Pins 12 - 19
'

' ***** Genutzter Microcontroller, Takt in Hz, Stacks & Framesize
$regfile = "attiny4313.dat"
$crystal = 8000000
$hwstack = 40
$swstack = 16
$framesize = 32


'***** Variable
Dim I As Byte             				   ' Standard-Zählvariable
Dim Led_sequenz(4) As Word				   ' 4 LED-Sequenzen à 16 Schaltzustände
Dim Impuls As Byte        				   ' legt die Impulsdauer fest
Dim Sequenz As Byte       				   ' Länge der Sequenz Werte 0 - 15 entsprechen 1 - 16 Sequenzbits

'*******************************
'*
'* Spielwiese
'*
'*******************************

Impuls = 150              				   ' Impulsdauer in Millisekunden
Sequenz = 15              				   ' s. o.
Led_sequenz(1) = &B0000010100000101     		 ' Sequenz wird von hinten nach vorne abgearbeitet 1 = an, 0 = aus
Led_sequenz(2) = &B0001010000101000
Led_sequenz(3) = &B0000111100001111
Led_sequenz(4) = &B1111000011110000
'Led_sequenz(5) = &B0101000001010000
'Led_sequenz(6) = &B0001010100010101
'Led_sequenz(7) = &B1100110011001100
'Led_sequenz(8) = &B0011001100110011

'*******************************
'*
'* Ende Spielwiese
'*
'*******************************
'
'***** Configs & Interrupts
' Portpin-Configs & Alias
Config Portb = Output
Led1 Alias Portb.0
Led2 Alias Portb.1
Led3 Alias Portb.2
Led4 Alias Portb.3
'Led5 Alias PortB.4
'Led6 Alias PortB.5
'Led7 Alias PortB.6
'Led8 Alias PortB.7

For I = 1 To 4
   Led1 = 1               				   ' 4 x 1-Sekunden-Test (wichtig, um korrekten Takt zu sehen)
   Wait 1
   Led1 = 0
   Wait 1
Next I

Do
   For I = 0 To Sequenz
      Led1 = Led_sequenz(1).i
      Led2 = Led_sequenz(2).i
      Led3 = Led_sequenz(3).i
      Led4 = Led_sequenz(4).i
' Led5 = Led_sequenz(5).i
' Led6 = Led_sequenz(6).i
' Led7 = Led_sequenz(7).i
' Led8 = Led_sequenz(8).i
      Waitms Impuls
   Next I
Loop
End


Die Sequenzen hat Micha erarbeitet; er wird Euch garantiert etwas dazu erzählen!

Fortsetzung im nächsten Post

Zu Hülf' - meine Kugel ist umgefallen!

Heisenberg bei einer Radarkontrolle:
Polizist: "Wissen Sie, wie schnell Sie waren?"
Heisenberg: "Nein. Aber ich weiß genau, wo ich jetzt bin!"


47

Sonntag, 24. Juli 2016, 03:45

Fortsetzung:

Von Bits, Bytes, Arrays & Co.
Bascom kennt verschiedene Variablentypen (siehe auch Bascom-Hilfe - lesen schadet nie)
Folgende Variablentypen werden im obigen Code genutzt:
Die kleinste Variable ist das Bit, Es kann entweder einen Wert von 0 oder von 1 haben.
Das Byte besteht aus 8 Bit, Wert 0 - 255 oder binär: &B00000000 - &B11111111. 1 = &B00000001
Das Word besteht aus 2 Byte bzw. 16 Bit, Wert 0 - 65535 oder binär: &B0000000000000000 - &B1111111111111111. 1 = &B0000000000000001
Das Array sind durchnummerierte Variablen gleichen Namens und Typs: Ente(1), Ente(2), ... Ente(n)
Bascom legt Arrays standardmäßig von 1 - nicht von 0 - ausgehend an. Seltsam. Normalerweise gibt's keine Ente(0). :(
Das lässt sich mit dem Base-Befehl ändern - brauchen wir hier aber nicht.

Das wars auch schon.

Nun zum Programm:
Das Tralala in Zeilen 13 - 17 kennt Ihr schon. Wir haben den Tiny aber von der Leine gelassen und auf 8 MHz Takt eingestellt (siehe unten).
Neu ist die Deklaration von Variablen in Zeilen 21 - 24.
In Bascom müssen Variable wie folgt deklariert werden:
Dim <Variablenname> As <Variablentyp>
Ein Array so:
Dim <Variablenname>(<Anzahl>) As <Variablentyp>
Es folgt Eure Spielwiese (Zeilen 32 - 41), dazu später mehr.
Da wir die Pins 12 - 19 benutzen, die "zufällig" PB0 - PB7 sind, können wir in Zeile 51 mit
Config PortB = Output
den kompletten Port B für die Ausgabe konfigurieren.
Config PortB.0 = Output
Config PortB.1 = Output
Config PortB.2 = Output
...
Config PortB.7 = Output

würde aber auch funktionieren.
Im Folgenden bekommt unsere Led1 Geschwisterchen: Led2 - Led4 bzw. Led8 (Zeilen 53 - 59)
Danach haben wir eine Zählschleife in Zeilen 61 - 66:
For I = 1 To 4
...
Next I

Das bedeutet, dass der Variablen I der Wert 1 zugewiesen wird und sich bei Erreichen von Next I um eins erhöht.
Die Schleife läuft also viermal durch, dann geht es weiter. Aufpassen: nach Beendigung der Schleife hat I den Wert 5, nicht 4!
Macht hier nix aus, ist aber wissenswert.
Innerhalb der Schleife finden wir Bekanntes aus "WM Blinker1.bas".
Led1 wird also viermal im Sekundentakt blinken.
Wozu?
Weicht die Blinkfrequenz deutlich vom Sekundentakt ab, so stimmen $crystal und der reale Controllertakt nicht überein.
Aufgaben nicht gemacht? :!!
Wenn der Takt stimmt, könnt Ihr diese Kontrolle natürlich aus dem Code löschen.

Danach geht's ins Hauptprogramm.
Endlosschleife und darin eine Zählschleife und sonst nix.
Was passiert da?
I fängt bei 0 an und zählt bis zum Wert der Variablen "Sequenz", voreingestellt auf 15. Also 16 Durchläufe, bis I wieder auf 0 gesetzt wird und wieder bis 15 zählt.
Ihr erinnert Euch noch an den Variablentyp Word? Eine Word-Variable besteht aus 16 Bits: Bit 0 - Bit 15. 1 = &B0000000000000001 Bit 0 ist also ganz rechts (aber nicht braun...). :D
In der Schleife schalten wir LedX an oder aus, je nach dem gelesenen Bit der Variable Led_sequenz(X): 1=an, 0=aus.
Dann warten wir eine Anzahl von Millisekunden, die durch die Variable "Impuls" festgelegt ist.

Beispiel:
Led_sequenz(1) = &B0000010100000101
Im ersten Zählschleifendurchlauf, bei dem I=0 ist, wird Led1 mit
Led1 = Led_sequenz(1).I
eingeschaltet, weil das Bit 0 (das ganz rechts) den Wert 1 hat.
Im zweiten Zählschleifendurchlauf, bei dem I=1 ist, wird Led1 mit
Led1 = Led_sequenz(1).I
ausgeschaltet, weil das Bit 1 (das zweite von rechts) den Wert 0 hat.
Im dritten Zählschleifendurchlauf, bei dem I=2 ist, wird Led1 mit
Led1 = Led_sequenz(1).I
eingeschaltet, weil das Bit 2 (das dritte von rechts) den Wert 1 hat.
... und so weiter, bis nach Bit 15 wieder Bit 0 abgefragt wird.

Dazu die "Spielwiese"
Hier könnt Ihr für 4 bzw. 8 LEDs individuelle Blinkmuster erzeugen:
Mit dem Wert von "Impuls" die Geschwindigkeit festlegen und mit dem Wert von "Sequenz" die Anzahl der abgefragten Bits (von rechts nach links, gelle!) festlegen.
Es könnte ja sein, dass jemand z. B. Rundumleuchten mit 5 LEDs baut. Dann holpert das mit 16 Schaltzuständen.
"Sequenz" dann besser den Wert 14 (15 Schaltzustände, wir zählen ab 0!) zuweisen.
Wem 16 Schaltzustände nicht reichen sollten - wir können auch ganz einfach auch 32 mit geringstem Aufwand realisieren. Einfach fragen.

Das wars auch schon - nix Besonderes.


8 MHz oder: Tiny unleashed
Hier zeigen wir Euch, wie der Tiny auf 8 MHz Takt eingestellt wird.
Wir "schrauben" an den sogenannten Fuse-Bits, der hardwareseitigen Einstellung des Mikrocontrollers.
Vorsicht! Hier kann man auch dem µC unbrauchbar machen!
Startet Bascom; WM Blinker2 sollte das aktuelle Programm sein.
Syntax checken, kompilieren, "Program chip", danach "Identify chip" klicken und im neuen Fenster auf "Fuse Bits" klicken
Der Tiny arbeitet intern schon mit 8 MHz; jedoch ist ein Divisor von 8 werksmäßig aktiviert.



Wählt bei Fuse Bit C statt "Divider by 8 enabled" "Divider by 8 disabled" aus.
Der vorher ausgegraute Button "Write FS" wird auswählbar. Draufklicken.
NICHT auf den Button "Write PRG" - der hat beim USBASP keine Wirkung und vermüllt nur das Programm.
Ein Klick auf den Button "Refresh" zeigt, ob die Änderung erfolgreich war.
Fertsch. Der Tiny läuft jetzt auf 8 MHz Nominaltakt. :D


Alle acht Kanäle freischalten
Um alle acht Kanäle freizuschalten, überweisen Sie bitte...




NEEEE.
Die M&Ms machen nur Spaß. :baeh:
  • Beschaltet PB.4 - PB.7 mit Vorwiderständen und low current-LEDs
  • Speichert WM Blinker2.bas unter WM Blinker2_8Kanal.bas ab
  • Entfernt die Hochkommata in Zeilen 56 - 59
  • Entfernt die Hochkommata in Zeilen 74 - 77

Und? Wer ahnt es?

Genau.
  • Ändert das Array von 4 auf 8 Words. Zeile 22 ist dann:
Dim Led_sequenz(8) As Word ' 8 LED-Sequenzen à 16 Schaltzustände

Fertig. Syntax-Check, kompilieren, programmieren, freuen.

Und dann: Die Bundesblinkminister warnen: Suchtgefahr! :saufen: Nee, schlimmer!

OK. Aber jetzt!


SPIELEN! JAAAAA! :tanz:


Schalten Sie auch nächstes Mal wieder ein, wenn sie die M&Ms sagen hören: "Mehr Licht!"

Viele Grüße
Mathias & Micha


P.S. Diesmal keine Hausaufgaben, weil Ihr wegen des Spielens eh' keine Zeit hättet. :)


Inhaltsverzeichnis aller Projekt-Posts in Post 1

Zu Hülf' - meine Kugel ist umgefallen!

Heisenberg bei einer Radarkontrolle:
Polizist: "Wissen Sie, wie schnell Sie waren?"
Heisenberg: "Nein. Aber ich weiß genau, wo ich jetzt bin!"


Elektron

unregistriert

48

Sonntag, 24. Juli 2016, 12:33

@ Mathias: Richtig, "PWMPORT" ist ein Alias. Dazu der passende Code:

Quellcode

1
2
Pwm1a = 0
Pwmport Alias Pwm1a


Dieser Code steht nicht in der Hauptschleife, sondern bereits in der "Vorkonfiguration".
PWM1A ist einer von 3 Hardware-PWM-Ausgängen, die man in einem ATMega8 nutzen kann. In meinem Fall habe ich diesen mit einem Transistor zur Ausgabe einer PWM auf die Leuchtdioden verbunden. Die LED's werden also direkt von einzelnen Kanälen geschaltet, die Dimmung jedoch von einem zusätzlich vorgeschalteten Transistor


LG - Maik

49

Sonntag, 24. Juli 2016, 13:47


Ich finde die Syntax-Erläuterungen für einen Benutzer zwischen Anfänger und Fortgeschrittenem als "Bindeglied" recht gut, für den Anfänger fehlen meiner Meinung jedoch ein paar Sachen.

Beispielsweise hätte ich erst einmal bei NULL angefangen. Welche Grundbefehle gibt es, was bedeuten die Semikolon, Do-Loop-Schleife, Header-Konfiguration, Ports, etc.pp.
Da gibt es noch massig Grundwissen zu vermitteln... Sonst geht das zu schnell, denke ich. Das Basiswissen muss erst vermittelt werden, damit sich der Anwender nicht nur die Code-Beispiele schnappt, sondern auch bei anderen Controllern anwenden kann. Nur eine Empfehlung... ;)

Ja, das wäre schön, wenn wirklich noch auf die Basics eingegangen wird.

Ich verfolge das Thema bisher mit großem Interesse und möchte ungern auf anderen Webseiten mir die Grundbefehle aneignen.
Ein Steckbrett und Zubehör habe ich bereits und bin nun am Überlegen mir auch den Rest zu kaufen und dann loszulegen.

Eine Verständnisfrage noch: der Mikrocontroller wird aber im Modell nicht verbaut sondern nur mit dem passenden Programm versehen und angeschlossen?

Ihr macht das bisher sehr gut
Weiter so :ok:

Hubra

Moderator

Beiträge: 11 439

Realname: Michael

Wohnort: Niederdürenbach-Hain

  • Nachricht senden

50

Sonntag, 24. Juli 2016, 17:57

Hallo liebe Bastelgemeinde. :wink:

Ich möchte Euch noch eine genauere Beschreibung für die von mir bisher verwendeten Ausgänge geben.
Auf den nachfolgenden Bildern kann man bereits erkennen das die LED's unterschiedlich leuchten.






Damit das ganze noch ein wenig Übersichtlicher wird, habe ich die Ausgänge auch noch Beschriftet. :)
Bei mir wird diese natürlich wieder in ein Einsatzfahrzeug eingebaut, was man an den blauen LED's bereits erkennen kann.
Im Moment sollen diese aber für eine bessere Übersicht dienen.


Da man auf den Bildern die einzelnen Blinkeffekte nicht sehen kann, habe ich auch noch ein Video davon für Euch gemacht.


Parallel zum Steckboard habe ich mir auch noch eine kleine Platine gelötet, :idee: auf der die ersten acht Ausgänge bereits angeschloßen sind.
Die zusätzlichen acht Ausgänge werde ich dann im unteren Teil noch anlöten.
Mit dieser Platine kann ich den ATtiny auch gleich Programmieren.


Auch von dieser Platine habe ich noch ein Video gemacht.


@ Marcus.

Zitat

Eine Verständnisfrage noch: der Mikrocontroller wird aber im Modell nicht verbaut sondern nur mit dem passenden Programm versehen und angeschlossen?

Der Mikrocontroller wird auf einer passenden Platine ins Modell gebaut.
Wie sollte er denn ansonsten die LED's ansteuern?
Allerdings benötigt die Platine keinen Programmierstecker oder Resettaster.
Da man den Mikrocontroller nach dem Programmieren in die IC - Fassung im Modell steckt.

@ All.

Auf die weiteren Grundkenntnisse wird dann Mathias weiter eingehen.

Gruß Micha und Mathias.


Inhaltsverzeichnis aller Projekt-Posts in Post 1

51

Sonntag, 24. Juli 2016, 18:53

Danke für deine Antwort und auch für die Videos :ok:

Elektron

unregistriert

52

Montag, 25. Juli 2016, 00:19

Zum obigen Code-Beispiel in Post 46:

Der Einfachheit halber kann die Wartezeit des Befehls "Waitms" auch direkt hinter den Befehl "Waitms" geschrieben werden. Eine Deklarierung im Header ist daher nicht zwingend nötig, spart eventuell bei größeren Programmen ein wenig Speicher ein. Aber wie gesagt - der Einfachheit halber.

Ein ganz einfaches Programm, am Beispiel eines simplen Wechselblinkers, würde dann beispielsweise (ohne Deklarierung der Variablen oder eines Headers) so aussehen:

Quellcode

1
2
3
4
5
6
7
8
9
Do

    Portb.0 = 1
        Waitms 150
    Portb.0 = 0 : Portb.1 = 1
        Waitms 150
    Portb.1 = 0

Loop


In diesem Code-Beispiel wird zu Beginn der Hauptschleife Portb.0 eingeschaltet. Nach Ablauf der Wartezeit von 0,15 Sekunden wird Portb.0 abgeschaltet, gleichzeitig Portb.1 zugeschaltet. Nach Ablauf der zweiten Wartezeit wird dieser Port ebenfalls wieder abgeschaltet.
Da sich dieses kleine Programm nun in der Hauptschleife befinde, läuft es jedoch nahtlos wieder von vorn los. In Gedanken könnte man die letzte Zeile also auch folgendermaßen schreiben: "Portb.1 = 0 : Portb.0= 1"
Das wäre jedoch doppelt-gemoppelt, denn der Port lässt sich nur einmal einschalten. Als Syntax-Fehler würde Bascom dies jedoch nicht ausgeben, es wäre im Grunde nur Speicher vergeudet

LG - Maik

53

Montag, 25. Juli 2016, 00:34

Hallo Maik, hallo Markus,

es war von Anfang an klar, dass dieses Projekt eine Gratwanderung werden würde.
Micha und ich haben wochenlang über den Thread diskutiert, Teilschritte/-projekte definiert, Posts vorbereitet, Programme erstellt und Bilder gemacht.
Erst dann haben wir den Thread eröffnet.
Schaut Euch den Thread-Titel an. Wir sind in einem Modellbauforum, wo erwartet wird, dass bald brauchbare Ergebnisse erzielt werden.
Bauen, mit dem Code spielen und nebenbei die Grundzüge von Bascom erlernen. Das ist unser Ziel.
Und doch! Wir haben bei Null angefangen!
Schaut Euch den Code von WM Blinker1 an.
Hier wurde der "Header" (ist auch Definitionssache... mit oder ohne Configs, Dims etc) weitestgehend erklärt.
Hier auf Stacks und Framesize einzugehen, bringt nix.
Auch die Grundstruktur der meisten Programme, die Endlosschleife, wurde gezeigt.
Jeder benutzte Befehl wurde erklärt. Z. B. den Toggle-Befehl zu kennen ist ein "nice to know" - hier aber nicht nötig.
Wer mit diesem Grundwissen die "Aufgaben" gemacht hat, kann schon Blitzer, Doppelblitzer, Wechselblinker etc. programmieren,
In WM Blinker2 kamen weitere Befehle und Erklärungen hinzu.
Wir haben jetzt schon ein tolles Spielzeug und parallel dazu ein wenig mehr Basics dazugelernt.
So werden wir auch bei den folgenden Posts neue Befehle und Hintergrundwissen anhand getesteter Programme vermitteln.
"Learning by doing" ist unserer Meinung der beste Weg, die Basics zu vermitteln.
Es sei an dieser Stelle nochmals auf die vorzügliche Bascom-Hilfefunktion hingewiesen.
Dort findet man zu jedem Befehl eine ausführliche Erklärung, meist mit Beispiel und Hinweis auf verwandte Befehle.

@Maik: Im nächsten Post, das sei schon einmal verraten, "entlasten" wir den Tiny.

@Marcus: Du siehst, Du kennst schon einige Befehle. Was sind Grundbefehle? Für uns sind das diejenigen Befehle, die für ein einfaches Programm gebraucht werden.
Du wirst noch viele weitere erlernen und "spielerisch" verinnerlichen.

Insgesamt ist es schwer, die "Taktrate" unserer offiziellen Posts festzulegen. Schaut mal in den Anfangspost. Der ist vom 13. Juli. Heute haben wir den 25..
Wir mussten den interessierten Lesern natürlich auch Zeit geben, sich die Bauteile zu besorgen. Weil: Bauen sollt Ihr selbst! Und Fragen stellen!

Wir hoffen, dass Ihr mit unserer Vorgehensweise einverstanden seid.

Viele Grüße
Mathias & Micha

Zu Hülf' - meine Kugel ist umgefallen!

Heisenberg bei einer Radarkontrolle:
Polizist: "Wissen Sie, wie schnell Sie waren?"
Heisenberg: "Nein. Aber ich weiß genau, wo ich jetzt bin!"


54

Montag, 25. Juli 2016, 02:22

Hallo Maik,

ich habe Deinen letzten Post eben erst gesehen. Vielen Dank für den Beitrag!
(Verdammt - so viel Geschreibsel für einen Befehl... ;) )
Jepp, das kenne ich...
Und Bascom kennt noch einen Wait-Befehl: Waitus für Mikrosekunden; seit Kurzem sogar mit Variable programmierbar. :baeh: <klugscheiß aus>

Du hast vollkommen Recht: Die Wait-Befehle sind sowohl ein Segen als auch ein Fluch.
Segen, weil jeder, der mit Mikrocontrollern anfängt, mit definierten Pausen einfach (und ziemlich exakt) zum Ziel kommt.
Den Fluch hast Du schön beschrieben. (OK, die Interrupts kommen ja noch...)

Wer hätte es gedacht? Der Code für einen frei programmierbaren Blinker ohne Wait-Befehle ist schon vorbereitet :D
Und wirklich einfach zu begreifen.

Viele Grüße
Mathias

Zu Hülf' - meine Kugel ist umgefallen!

Heisenberg bei einer Radarkontrolle:
Polizist: "Wissen Sie, wie schnell Sie waren?"
Heisenberg: "Nein. Aber ich weiß genau, wo ich jetzt bin!"


Beiträge: 174

Realname: Stefan

Wohnort: Raum Hildesheim

  • Nachricht senden

55

Montag, 25. Juli 2016, 14:34

Huhu,
eine Sache die mich an Atmel reizte war die Tatsache, dass es nahezu alles kostenlos gibt. Sogar einen Programmer könnte man sich aus wenigen Teilen selber bauen. Das ist wohl auch ein Grund, warum es eine so grosse Community für diesen uC gibt. Wenn ich hier aber die Beschränkungen von Bascom so lese, ist das schon ziemlich traurig. Ihr habt sicherlich Recht, für den Einsteiger ist das eine Erleichterung, zudem kann man mit der Demo auch erst einmal "hereinschnuppern". Wer aber Kenntnisse in C-Programmierung hat, der sollte da meiner Meinung nach die Finger von lassen und lieber gleich zum AtmelStudio greifen.

Ein Thema fehlt mir hier bei eurer Auflistung noch. Wie du selber schon meintest ist "Kommunikation extrem wichtig". Glaube nicht, dass dieser Programmer eine Debugging-Möglichkeit anbietet? Stichwort wäre hier der USART und eine Kommunikation zwischen dem Controller und dem PC zwecks Fehlererkennung. Irgendwie fragt man sich früher oder später ja doch mal, welcher Wert nun zur Laufzeit wirklich irgend eine der benutzten Variablen hat, ob irgendwelche Bedingungen auch wirklich ausgeführt werden, das Ding eigentlich das macht was ich wollte. Denke, für die Anbindung gibt es mittlerweile auch schon recht simple Lösungen für, um den uC direkt an USB anzuschliessen. Ansonsten brauchte es hierfür einen Pegelwandler um von TTL auf die +-12V zu kommen, und einen "Com-Port auf USB"-Adapter.

Interrupts hattest du ja schon im letzten Post angesprochen. Gerade bei zeitgesteuerten Events (Lampe leuchtet 1sek, dann die andere etc.) wirst du hier sicherlich die Verwendung eines Timers ansprechen? Bei etwas komplizierteren Programmen möchte man sich ja nicht den Controller mit Wait-Befehlen "blockieren".

Den Einsatz des Spannungsreglers finde ich hier auch ein wenig bedenklich. Um bei 12V auf 5V zu kommen, fliessen hier bereits dicke 7V in die Formel der Verlustleistung ein. Mit jedem Verbraucher mehr an deinen 5V steigt die Verlustleistung damit ziemlich schnell an. Handwarm geht ja noch, aber wenn der Treiberbaustein noch einen Bruder dazubekommt und noch mehr LEDs dran hängen, wird der Regler irgendwann glühen. Wennn die ganze Technik später mal in ein Modell eingebaut werden soll, gibt's ein Problem. Einfache Schaltregler, bei denen sich die Ausgangsspannung mit einem kleinen Poti einstellen lässt, gibt es auch schon fertig zu kaufen für nicht mal 5€ beim Ebay-Chinesen.

Wenn die Anzahl der gebrauchten LEDs eine gewisse Anzahl übersteigt, bietet sich hier auch ein ganz anderer Ansatz an. Die devise lautet dann nicht einfach alle LEDs unter Strom zu setzen, sondern in schneller Folge allen LEDs hintereinander einen kurzen Stromimpuls zu verpassen. Im Grunde ist dann immer nur 1 LED wirklich aktiv (oder ein paar mehr), und dementsprechend ist hier auch der Stromverbrauch sehr gering. Durch die Trägheit der LEDs und der schnellen Abfolge gibt es kein Flackern bei diesem "schnellen Lauflicht". Stichwort wäre hier Multiplexing oder Charlieplexing. Eines meiner beliebtesten Bauteile für solche Zwecke ist hier der MAX6950 und ähnliche.

Sorry wegen des bisschen mäkeln. Den Thread finde ich jedenfalls Klasse und super, welche Arbeit ihr hier rein steckt. Macht weiter so ;)

Elektron

unregistriert

56

Montag, 25. Juli 2016, 21:42

@ Stefan M:
Statt eines einfachen Spannungsreglers empfehle ich dir einen Schaltregler.
Du kannst allerdings auch ein wenig "tricksen", falls die Schaltregler zu teuer sind (kosten schon deutlich mehr als Linearregler), Stichwort "Transostoren" :

Statt den Vorwiderstand der Leuchtdioden direkt an den entsprechenden Ausgang des Controllers zu hängen, setzt du einen Widerstand zwischen 2,2 und 4,7K-Ohm an den entsprechenden Ausgangsport des Controllers. Das andere Ende verbindest du dann aber nicht mit der LED, sondern mit der Basis des Transistors. Ich empfehle für diese Kleinstleistungszwecke die Typen BCD546, BCD547 und BCD548, alles NPN-Typen. Dann verbindest du die LED-Anoden mit +12V, an die Kathoden den Vorwiderstand (oder umgekehrt - Geschmackssache ;) ), und den Vorwiderstand mit dem Collektor des Transistors. Der Emitter muss dann nur noch mit GND verbunden werden und fertig ist deine vollständig "Spannungsregler-entlastete" Schaltung.

Das Ganze hat dann sogar den Vorteil, dass du mehrere LED gleicher Farbe und gleichen Typ's hintereinander schalten kannst. Angenommen, jede LED braucht 2,0V, dann kannst du mal eben 5 davon hintereinander setzen, ohne einen Vorwiderstand einsetzen zu müssen. Gleiches gilt bei 3V je LED => 4 LED in Reihe. Hast du einem recht "krummen" Wert, beispielsweise 3,6V je LED, dann sind das 3 LED = 10,8V - und für die restlichen 1,2V errechnest du dir bei 20mA Lichtstrom (Datenblatt der LED's beachten - kann auch mehr oder weniger sein) den entsprechenden Vorwiderstand ;).

Wer Angst um seine Leuchtdioden hat, kann auch mehrere Festspannungsregler in einer Schaltung unterbringen - geht problemlos. Wichtig ist nur, dass Jeder Festspannungsregler seine eigenen Abblockkondensatoren erhält (so dicht wie möglich am Regler verlötet) und dass ALLE GND miteinander verbunden sind, auch mit dem Controller.
So kann beispielsweise ein 7805 den Controller versorgen, während sich der 2te 7805 ausschließlich um die Leuchtdioden kümmert. Ein 3ter 7805 könnte dann beispielsweise die Stromzufuhr für Relais bereit stellen, etc.pp.


Stefan, das Problem bei deinem letzten Absatz ist, dass du dadurch nicht nur die Rechenleistung des Controllers beeinträchtigt (verbraucht 50 Zyklen je Sekunde, 25 mal an, 25 mal aus), sondern auch ein Timer verbraucht wird. Die meisten Controller haben nur 3 Timer (Timer 0, 1 und 2), einer davon ist sogar nur eingeschränkt nutzbar (Glaube Timer 2). Die Timer müssen exakt errechnet und konfiguriert werden, sind damit in der Regel auch nur für einen einzigen Zweck bestimmt (beispielsweise Auslösen eines 0,1-Sekunden-Interrupts für Zähl- oder Countdown-Anwendungen)
Sicher reduziert es den Stromverbrauch enorm, ist es offen gesagt aber auch nicht wert. Da gibt es andere Möglichkeiten, beispielsweise wie oben beschrieben.

Alternativ kannst du auch folgende beiden Möglichkeiten nutzen:

1.) Den Lichtstrom um 25% senken - auf die Helligkeit hat dies, aufgrund der nicht-linearen Diodenkennlinie, kaum Auswirkungen und ist nur im direkten Vergleich sichtbar
2.) verwende einen NE555 als Taktgenerator zum Schalten der LED's. Der NE555 triggert dabei einen Transistor, welcher dann im Grunde nichts anderes macht, als die Spannungszufuhr der LED's schnell zu unterbrechen und wieder zuzuschalten. WICHTIG: An den Ausgängen den Controllers sollte eine Schutzdiode N4148 installiert werden, um Rückkopplungen der Taktfrequenz auf den Controller zu vermeiden. Die 0,7V Verlustspannung sollten bei den Vorwiderständen mit berücksichtigt werden.


LG - Maik

Beiträge: 1 183

Realname: Wilfried Hoffmann

Wohnort: Braunschweig

  • Nachricht senden

57

Montag, 25. Juli 2016, 22:47

Hallo Mathias, hallo Micha,
mit dem konfigurierbaren 8-Kanal Blinker hat alles prima geklappt.
Auch das Umstricken der Blinkmuster war kein Problem.
Nur ein kleiner Schönheitsfehler hat sich in der Beschreibung eingeschlichen.

Zitat

Wählt bei Fuse Bit C statt "Divider by 8 enabled""Divider by 8 disabled" aus.
Der vorher ausgegraute Button "Write FS" wird auswählbar.Draufklicken.
Der Button "Write FS" wird erst auswählbar NACH der Änderung auf „disabled“ UND dem Anklicken eines beliebigen anderen Feldes der Maske.

@Maik
Vielen Dank für die Transistorerklärung.
Viele Grüße
Willie

Man ist niemals zu alt, um Neues zu lernen.
Es gibt keine dummen Fragen, nur dumme Antworten.

Fertig:

VW Bus T3 – Mein erster Tourbus

In Bearbeitung:
Chevy G20 Van in 1:25 nach realem Vorbild

Fertige Projekte im Portfolio!

58

Montag, 25. Juli 2016, 23:23

Hallo Stefan,

"Mäkelei" habe ich nirgendwo in Deinem Beitrag gesehen.
Der Thread richtet sich an Anfänger, die Modellbau als Hobby haben. Da kommt man mit Bascom schnell und mit wenigen Mitteln schon zu ersten Erfolgen.
Die C-Gemeinde (inklusive Arduino) ist um ein vielfaches größer.
Mit 4 KB Code lässt sich schon einiges anstellen! Der ATtiny4313 könnte eh' nicht mehr.

Debugging ist recht einfach mit dem eingebauten Simulator möglich (siehe Bascom-Hilfe). Eine Kommunikation via Max232 mit dem PC ist angedacht, momentan aber "oversized".
Zur Info: Bei komplizierteren Programmen lasse ich mir die kritischen Variablen einfach auf einem LCD-Display ausgeben.

Zum Spannungsregler: Er wird in der Zukunft nur den Mikrocontroller speisen. Die zusätzlichen Treiberbausteine machen kaum etwas aus; die eigentliche Last läuft auf 12 V. Glühen? Never ever.
5€ beim Chinesen + lange Wartezeit vs. <1 € bei Pollin und alles gleichzeitig da. Was wäre Dein Favorit?

Multiplexing et al. ist etwas Feines für Anwendungen, in denen nicht ausreichend Portpins zur Verfügung stehen. Brauchen wir (noch) nicht.
Eher würde ich zu einem oder mehreren Portexpandern oder einem kommunizierenden Zweitcontroller tendieren.

Es freut mich, dass Du unseren Thread gut findest - es werden noch einige interessante Sachen folgen.

Viele Grüße
Mathias

Zu Hülf' - meine Kugel ist umgefallen!

Heisenberg bei einer Radarkontrolle:
Polizist: "Wissen Sie, wie schnell Sie waren?"
Heisenberg: "Nein. Aber ich weiß genau, wo ich jetzt bin!"


Beiträge: 174

Realname: Stefan

Wohnort: Raum Hildesheim

  • Nachricht senden

59

Montag, 25. Juli 2016, 23:42

Mmh, das scheint ja unter Bascom ja interessant gelöst zu sein.
Eine Subroutine scheint mir hier eine normale "Unterfunktion" sein. Unterfunktionen werden nicht durch einen Interrupt betreten, sondern sie werden einfach irgendwo im Programm ausgeführt wenn man sie braucht. Halt eine Unterfunktion - z.B. für einen oft benötigten, sich wiederholenden oder ähnlichen Vorgang, für den man den Code ansonsten mehrfach hinschreiben müsste. Insofern bringen sie neben der Übersichtlichkeit sogar einen immensen Speichervorteil, zumindest für den wertvollen (2kB Platz beim ATTIny?) Flash-Rom.
Ein Interrupt hingegen betritt in der Regel eine sogenannten "Interrupt Service Routine" (ISR). Das ist im Grunde auch eine Art spezieller Subroutine, nur dass diese halt nicht vom Programm her aufgerufen wird, sondern durch den Interrupt gestartet wird. Wenn ich ein bisschen rumgoogle scheint es hier die Möglichkeit zu geben, einfach deine Subroutine zu einer ISR zu "erklären". Nach dem Motto "Wenn Interrupt ausgelöst wird, dann führe Funktion Lauflicht aus"

Quellcode

1
On TimerX Lauflicht

Korrigier mich, wenn ich falsch liege ;)

Was die Ansteuerung von LEDs angeht, wie gesagt, ist hier die Reihe um den MAX6950 und höher für mich die erste Wahl.
Was man damit machen kann? Hier habe ich z.B. mal einen elektronischen Geocache gebaut. Das ist ein 4-gewinnt Spiel, das der Mensch gegen den Computer (Atmega) gewinnen muss, um die Zielkoordinaten für das Ziel zu erhalten. Verbaut sind hier 42 zweifarbige LEDs (rot/grün). Da sie wahlweise rot oder grün sein sollen, und auch ein Mischbetrieb (rot+grün=gelb) möglich ist, sind das also 84 LEDs, die zeitgleich aufleuchten können. Das Ganze Ding braucht dabei 3V und verbraucht um die 170 mA.





Wie gesagt, kann ich im Punkte LED-Ansteuerung eigentlich nur empfehlen.

60

Montag, 25. Juli 2016, 23:44

Hallo Maik,

willst Du meinen Job haben? :D
Du nimmst hier Dinge vorweg, die in den nächsten Posts ausführlich erklärt werden sollen.
Dabei sind Dir leider einige Fehler und auch Denkfehler unterlaufen.

Zur Sicherheit für alle Leser: auch wenn es rechnerisch noch so schön passt:
Niemals LEDs ohne Vorwiderstand - sei er auch noch so klein - anschließen.
Ausnahme ist natürlich eine Konstantstromquelle oder ein kurzer Test.

Nix für ungut, Maik :hand:

LG
Mathias

P.S. Maik, bitte poste, was Du als "Header" verstehst.

Zu Hülf' - meine Kugel ist umgefallen!

Heisenberg bei einer Radarkontrolle:
Polizist: "Wissen Sie, wie schnell Sie waren?"
Heisenberg: "Nein. Aber ich weiß genau, wo ich jetzt bin!"


Werbung