uC Projekte
MORSE-Reader
Erkennung von
Solar-Messungen
Vorgestellt wird ein kleines Projekt mit einem Arduino Duemilanove mit zusätzlichem DataLogger-Shield und einer passenden IO-Erweiterung um 4 analoge Kanäle zu erfassen und zusammen mit Datum und Uhrzeit im offline-Betrieb auf einer handelsüblichen SD-Speicherkarte zwischenzuspeichern.
Details zum Projekt wie genaue Beschreibung, Schaltpläne, Bestückungspläne, Messaufbau, Sourcecode, PC-Anwendung, Messkurven und detaillierte Vorstellung und Diskussion der Ergebnisse sind den Projektunterlagen entnehmbar. Diese sind über den Downloadbereich verfügbar.
Hier nur auszugsweise der fertig aufgebaute Datenlogger als Foto sowie exemplarisch eine aufgenommene Messkurve vorab.
Exemplarisch eine der gemessenen Kurven:
Rahmenbedingungen zum Projekt:
Effekte durch nichtlinearen Innenwiderstand der Solarzelle und geringfügige Fehlanpassung durch nicht optimal gewählten Lastwiderstand bleiben hier unberücksichtigt, da diese Verhältnisse auch in der Praxis auftreten (z.B. vollen, teilentleerten, leeren Akku mit unerschiedlichen Spannungen, während dieser von der Zelle geladen wird). Zudem sind diese Faktoren ausschließlich für die maximale abgebbare Leistung der Zelle von Bedeutung und nicht für die grundsätzlichen Veränderungseffekte durch Umweltbedingungen, um die es hier im vorliegenden Projekt primär geht.
Hier sind noch die Ergebnisse der Auswertungen aufgelistet.
- Die nominale Leistung der Solarzelle wird nicht erreicht (auch nicht, wenn die Zelle zum Test manuell so gegen die Sonne positioniert wurde, dass die Sonnen-Einstrahlung senkrecht erfolgte, der Wert stieg zwar, erreichte aber in unseren Breiten nicht die Hersteller-Angaben).
- Der Einfallswinkel der Sonnenstrahlung auf die Solarzelle hat enorm großen Einfluss auf die Leistung der Solarzelle. Auch auf einem Dach montierte Solarpanels können somit nur suboptimal arbeiten. Derartige Zellen können ja nicht gegenüber dem Sonnenstand nachgeführt werden!
- Jede geringste Abschattung (z.B. durch Bewölkung) läßt die produzierte Leistung der verwendeten Solarzelle sofort einbrechen (0,85 W zu 0,02 W, d.h. im Verhältnis 42,5 zu 1 oder von relativen 100% auf 2,4%)!
- Der jahreszeitlich bedingte Einfallswinkel senkt das maximal gewinnbare Enegieniveau von Solarzellen gegenüber dem Maximum während der Sommerzeit stark ab.
- Die jahreszeitlich bedingte Bewölkung in unseren Breiten mindert die theoretisch mögliche Leistung weiter stark ab!
- Nur 3 Monate im Jahreszeitablauf machen schon weit mehr als 1/3 weniger maximale Leistung im Tagesverlauf aus! Berücksichtigt man die oben aufgeführten, in unseren Breiten üblichen Bewölkungseffekte, verstärkt sich dieser Erffekt zusätzlich.
- Die Messergebnisse liefern wichtige Erkenntnisse für die Dimensionierung von solargestützten Stromversorgungsanlagen und sind teilweise doch sehr ernüchternd!
zurück zu Mikrocontroller
ATmega32-Experimentierboard
Dies ist ein reines Hardware-Projekt. Es beschreibt ein ATmega32-Experimentierboard und ein dazugehöriges Erweiterungsboard.
Design-Vorgaben für das Projekt:
Universelles Experimentierboard mit
ATmega32 Prozessor bzw. Pin-komptiblen Typen (z.B. ATmega644)
Programmierung über ISP-Schnittstelle gem. Atmel Standard
Alternative Programmiermöglichkeit über im Prozessor vorinstallierten Bootloader und USB
4 Ports auf Pfostenstecker (standardisierte Belegung, vergleichbar zu Industrieboards)
Quarz auf Sockel (austauschbar)
USB-SSt mit FT232 (in Form eines ZL1USB-Moduls)
Alternative Möglichkeit, eine RS232-SSt anstelle des ZL1USB einzusetzen
Echtzeituhr mit DS1307 (Dallas)
Serielles EEPROM 24xxx (aktuell 24C512 (512K)) zur Datenspeicherung
I2C (TWI) Bus-Erweiterungsmöglichkeit
Buzzer als akustischer Signalgeber
Justierbare Konstantspannungsquelle für AD-Wandler des ATmega32
4 Optokoppler zur Potentialtrennung von Signalen der seriellen SSt (für Amateurfunkzwecke)
1 Relais als Schaltausgang (für Amateurfunkzwecke)
Stromversorgungs-Anschluss alternativ für
Wechselspannung 8..12 V
Gleichspannung 9-12 V
Batterieanschluss für 9 V Blockbatterie
+5 V Anschluss
Reset-Taster für Prozessor-Reset
3 LED’s (high-aktiv, inkl. Vorwiderstände)
1 LED (low-aktiv, zugleich Power-Anzeige)
Über Pfosten(Wannen)-Stecker möglichst frei beschaltbar bzw. konfigurierbar
Aufbau auf einer Europa-Lochraster-Platine
Das nachfolgende Foto zeigt das aufgebaute Board:
Vorgaben für das Erweiterungsboard:
Wannenstecker zum Anschluss an das Experimentierboard
Zwei Stück PCF8574P i2c-8-bit Ein-Ausgabe-Schaltkreis
Ein PCF8591P i2c-8-bit Analog-Eingabe (4 Kanäle) und 1 Ausgabe-Kanal (DAC 8 bit)
Ein LM75 i2c-Temperatur-Sensor
Wannenstecker zum Anschluss an die PCF8574P
Jumper zum Beschalten
Alle i2c-Adressen mit Jumper individuell einstellbar
Vorbereiteter Sockel für LF356N (z.Zt. noch nicht vollständig beschaltet)
Fünf Taster zur Eingabe mit Pull-Up Widerständen
Ein LCD-Display (16x2 Zeichen)
5 teilweise verschiedene Spannungsteiler für Analog-Messungen, teilw. abgleichbar
1 LDR Typ LDR03 (lichtabhängiger Widerstand) für Helligkeitsmessungen
8 Anschlussklemmen (Schraubanschluss)
Aufbau auf Lochraster im Europakartenformat
Das nachfolgende Foto zeigt das aufgebaute Erweiterungsborad:
Im Download-Bereich finden Sie die Projektunterlagen mit Schaltbildern und Bestückungsplänen.
Software ist nicht Bestandteil dieses Projektes. Eventuell werden in weiteren Beiträgen kompatible Anwendungen beschrieben.
zurück zu Mikrocontroller
Trainingstimer
Beschrieben wird ein Mikrocontrollerprojekt mit dem ATmega32 Experimentierboard (siehe anderer Beitrag), welches einen Timer für ein Intervalltraining (hier Karate-Jugend-Training) realisiert.
Funktionen der Lösung:
Die geforderte Funktion war die Verwaltung von zwei Zeitabschnitten (Trainingszeit und Pausenzeit) mit Unterstützung von akustischen Signalen. Beide Zeiten sollten unabhängig voneinander in Intervallen von je 30 Sekunden variabel einstellbar sein.
Nach Start des Timers sollte ein akustisches Signal den Start des Trainings einleiten, anschließend sollte der voreingestellte Timer für das Training sekundenweise auf Null herab gezählt werden. Bei Erreichen des Zählerstands Null für das Training, sollte ein anderes akustisches Signal den Beginn der Pause einleiten und der Pausen-Timer auf Null herab gezählt werden. Nach Erreichen des Zählerstands Null des Pausen-Timers sollten beide Timer wieder mit den voreingestellten Intervallzeiten geladen werden und der Prozess in einer Endlosschleife fortgesetzt werden. Eine Stopp-Taste sollte den Prozess abbrechbar machen.
Aufbau des Prototypen:
Weitere Informationen, Schaltplan und compilierten HEX-code für einen ATmega32 mit 16 MHz können Sie vom Download-Bereich herunterladen.
Voltmeter mit Arduino
Der vorliegende Beitrag beschreibt ein sehr einfaches Arduino-Projekt, welches ein 1-Kanal Voltmeter mit einem Arduino Duemilanove realisiert.
Das Projekt soll zeigen, wie einfach es ist, mittels der Open-Source-Plattform Arduino (Entwicklungsumgebung, Sprache, Hardware) kleinere Projekte aus dem Mikrocontroller-Umfeld zu realisieren. Dieser Beitrag ist somit als 'appetizer' gedacht und soll einfach den Wunsch auf mehr wecken!
Als Hardware sind eine größere Anzahl von Arduino-kompatiblen Boards für alle mögliche Einsatzzwecke verfügbar. Von mir wurde der Duemilanove ausgewählt, da er aus meiner Sicht flexibel eingesetzt werden kann und zudem sehr preisgünstig zu beziehen ist. Ich will hier keinen Grundsatzartikel über Arduino-Programmierung schreiben, da es im Netz, wie auch in der kommerziellen Literatur viele excellente Abhandlungen dazu gibt. Ich werde also nicht explizit erläutern, wie die Entwicklungsumgebung, oder das Programmieren des Arduino-Boards funktioniert. Dies könnnen Sie alles in den Orginalquellen dazu nachlesen. In diesem Zusammenhang verweise ich auf meine Link-Seite.
Hier soll nur ein kleines praktisches Beispiel vorgestellt werden. Ein Einkanal-Voltmeter mit Anzeige der Spannungswerte auf dem PC. Der Spannungsbereich der Anwendung beträgt 0 V . . +5 V, bei 10 bit Auflösung, d.h. minimal 4,88 mV und nur einem Kanal. Bei Bedarf kann die Anwendung mittels Spannungsteiler aus 2 Widerständen sehr einfach auf einen höheren Eingangsspannungsbereich gebracht werden. Mit dem verwendeten Arduino (Duemilanove) können maximal 6 Spannungen mit je 10 bit Auflösung gelesen werden. Auch diese Erweiterung ist einfach zu realisieren.
Wie auf dem Bild zu sehen ist, besitzt der Duemilanove bereits einen USB-Anschluss über den das Board mittels vorinstalliertem Bootloader programmiert werden kann und über den auch das eingelesene Analog-Signal an den PC übergeben wird. In diesem Falle erzeugt die USB-SSt bei Anschluss an den PC ein virtuelles Com-Port und simuliert somit das Vorhandensein einer seriellen Schnittstelle. In unserem Falle überträgt das Board die Daten mit einer Geschwindigkeit von 9600 bit/s an den PC.
Für den ersten Test genügt es, das in die Entwicklungsumgebung integrierte Terminal (Konsole) zu nutzen. Dies ist im folgenden Bild dargestellt.
Man erkennt hierbei schon die Spannungswerte, die zwischen 1,66 V und 1,68 V schwanken. Weiterhin ist zu erkennen, dass die Konsole über den virtuellen COM-Port COM2 arbeitet.
Für eine derart simple Applikation ist auch eine spezielle PC-Anwendung mit Delphi schnell zusammengebastelt. Im nachfolgenden Bild ist diese PC-Applikation in Aktion zu sehen.
Im Bereich Download finden Sie die Projektdaten (Arduino-Sketch (Quelltext für den Arduino Mikrocontroller), Scans und die PC-Applikation) unter Freeware zum download. Beim Studium des Quelltextes werden Sie selbst erkennen, wie einfach die Sache ist. Viel Spaß beim Einstieg in die Arduino-Programmierung.
zurück zu Mikrocontroller