|
Größe: 3859
Kommentar: Ergänzung zum Programmcode
|
Größe: 4297
Kommentar:
|
| Gelöschter Text ist auf diese Art markiert. | Hinzugefügter Text ist auf diese Art markiert. |
| Zeile 23: | Zeile 23: |
| Durch die Einbindung eines Softwaremäßigen Pull-Up-Widerstands entfällt dieser Hardwareseitig. Dadurch kann z.B. J16/J17 der FL-CTRL direkt mit dem Eingang, z.B. PC2 des Light-CTRL verbunden werden. | |
| Zeile 38: | Zeile 39: |
| #define WP PINC | #define WP PINC |
| Zeile 54: | Zeile 55: |
| // eines Pull-Up wiederstandes für die Eingangsbeschaltung | // eines Pull-Up Widerstandes für die Eingangsbeschaltung |
| Zeile 57: | Zeile 58: |
| DDRD |= (1 << PD7)|(1 << PD3)|(1 << PD4)|(1 << PD5); | DDRD |= (1 << PD3)|(1 << PD4)|(1 << PD5)|(1 << PD7); }}} Das eigentliche Programm liest nun den Port C aus und führt bei einer logischen "0" an Pin C2 das Blink-Programm aus. {{{ // UND-Verknüpfung zwischen dem eingelesenen Port C und if (!(WP & (1<<PC2))) { |
Light-CTRL, was ist das...
Die Light-CTRL ist eine Licht oder auch Lastschaltung, basierend auf der Bl-CTRL.
... und warum eigentlich?
Das Problem bestand darin, dass zum einen die LED-Beleuchtung über J16/J17 der FL-CTRL steuerbar sein sollte und zudem die teilweise blinken oder besser doppelt blitzen sollte. Die erste Überlegung war, die LED-Beleuchtung über eine Transistorschaltung zu realisieren und den Blitzer über eine Reihenschaltung von NE555-Timern zu realisieren. Jedoch stößt man aufgrund der Abmessungen auf einer Lochrasterplatine schnell an seine Grenzen. Auch die Einstellung der Zeit über Potentiometer ist nicht sauber realisierbar.
Viel einfacher kann eine solche Schaltung mit einem Mikrokontroller wie dem ATMEGA8 aufgebaut werden. Die BL-CTRL-Platine eignet sich aufgrund der vorgesehenen FETs auch wunderbar dazu.
Umbau der bestehenden BL-Ctrl
Auf einer Fertig bestückten BL-CTRl müssen die FETs IRFR 5305 und deren Ansteuerung entfernt werden. Die FETs IRFR1205 und die Transistoren BC817-16SMD können als Schalter verwendet werden. Die Widerstände R7,R12,R13,R20,R21,R22,R1,R4,R18,R10,R14, sowie die Kondensatoren C1,C2, C4 und C17 müssen entfernt werden. Anbei hier auch ein abgeänderter Schaltplan des BL-CTRL:
ImageLink(http://gallery.mikrokopter.de/main.php?g2_view=core.DownloadItem&g2_itemId=11926,http://gallery.mikrokopter.de/main.php/v/tech/Light-CTRL_Schaltplan.JPG.html) ImageLink(http://gallery.mikrokopter.de/main.php?g2_view=core.DownloadItem&g2_itemId=11949,http://gallery.mikrokopter.de/main.php/v/tech/bild+087.jpg.html) ImageLink(http://gallery.mikrokopter.de/main.php?g2_view=core.DownloadItem&g2_itemId=11951,http://gallery.mikrokopter.de/main.php/v/tech/bild+091.jpg.html)
FETs und Transistoren der Bl-Ctrl als Schalter nutzen
Die Transistoren und FETs, die bereits mit dem Emitter, bzw. Source an Masse liegen können relativ leicht als Masseschalter verwendet werden. z.B. können direkt über die 12V Versorgungsspannung und einen FET, LED-Leisten angesteuert werden.
Bei den SMD-Transistoren muss man die Leistung beachten!
Eingänge mit J16/J17 (FL-Ctrl) schalten
Bei einem Mikrokontroller lassen sich die Ports auch als Eingänge deklarieren. Die Ports PC0..PC2 bieten sich dabei an, denn diese wurden für die Motorenbemessung bereits auf Lötflächen herausgeführt. Durch die Einbindung eines Softwaremäßigen Pull-Up-Widerstands entfällt dieser Hardwareseitig. Dadurch kann z.B. J16/J17 der FL-CTRL direkt mit dem Eingang, z.B. PC2 des Light-CTRL verbunden werden.
Programmierung
Programmieren WinAVR
Der Programmcode
Zu Beginn des Programms wird mit den Präprozessordirektiven gestartet. Hier werden die Unterprogramme und wichtige Parameter, wie z.B. die Prozessorgeschwindigkeit angegeben.
// Einstellen des Systemtakts des µC auf 1Mhz. // UL gibt an, dass es ein unsigned-Long Datentyp ist. #define F_CPU 1000000UL // Erstellt eine Instanz des Prozessabbilds der Eingänge. Soll heißen, // dass die Zustände der Eingänge ständig in die Variable WP übergeben werden. #define WP PINC // Einbinden zusätzlicher Bibliotheken oder Unterprogramme. Z.B. die Funktionen // der Ein- und Ausgabe des ATMEL. #include <avr/io.h> #include <util/delay.h>
Im Hauptprogramm (main) werden zunächst die Parameter für die einzelnen Ports und Pins definiert. Pin C2 (BL-CTRL auch NULL_C genannt) wird als Eingang verwendet
int main(void)
{
// Port C "pauschal" als Eingänge festlegen
DDRC =0x00;
// Pullup für PC2 aktivieren. Damit entfällt der Aufbau
// eines Pull-Up Widerstandes für die Eingangsbeschaltung
PORTC |= (1 << PC2);
// Pin D3,D4,D5 und D7 als Ausgänge festlegen
DDRD |= (1 << PD3)|(1 << PD4)|(1 << PD5)|(1 << PD7);Das eigentliche Programm liest nun den Port C aus und führt bei einer logischen "0" an Pin C2 das Blink-Programm aus.
// UND-Verknüpfung zwischen dem eingelesenen Port C und
if (!(WP & (1<<PC2)))
{
Erzeugen des Makefiles