Alle Programme dieser Seite sind Opensource/Freeware.
Selbstbau einer Propelleruhr. Bisherige Version hat 8 rote LEDs, ein ArduinoMini als Controller
und ein IR-Sensor um Zeit zu stellen. IR-Sender ist mit einem Attiny13A realisiert.
Motor ist ein einfacher Gleichstrommotor mit etwa 1200 Umdrehungen pro Minute.
Die Stromübertragung funktioniert mit 2 Kugellagern als "Schleifer".
Quellprogramm: propelleruhr.tar.gz
Prototyp-Schaltung um ein UKW-Radio mit einem DAB-Radio zu synchronisieren.
Hintergrund ist, dass ich in einem Raum ein UKW-Radio hatte und im andern Raum ein DAB+-Radio
mit selbem Sender eingestellt. Das DAB+-Radio hinkt aber einige Sekunden hinterher.
Das UKW-Radio besteht aus einem Empfänger und einem Verstärker als zwei verschiedene
Geräte. Mit der vorliegenden Schaltung wird das Signal aus dem Empfänger digitalisiert,
in einem RAM zwischengespeichert und nach einstellbarer Verzögerungszeit wieder in ein
Analogsignal umgewandelt, das dann an den Verstärker geschickt wird.
Als Controller wurde ein Arduino-Atmega2560-Board verwendet. Das RAM hat eine Grösse von 1MB.
Das reicht um maximal 11.9 Sekunden lang ein Stereosignal zu speichern. (8 Bit je Kanal, 44kHz)
Um eingestellte Verzögerung anzuzeigen wird ein 4-Zeilen-LCD mit 16 Zeichen pro Zeile benutzt.
Quellprogramm: audioverzoegerung.tar.gz
Bei der aufgebauten Schaltung ist entgegen dem Schaltschema der Eingang rechts und Ausgang links.
Der in der Luft hängende Zusatz beim Eingang ist eine vereinfachte Eingangsschaltung mit
nur einem 1uF Kondensator pro Kanal, statt dem ursprünglichen Vorverstärker im Schaltplan.
Der zweite Zusatz (links oben) ist zur Kontrolle der Stärke des Eingangssignals,
bestehend aus 8 LEDs und ist bisher nicht im Schaltplan eingezeichnet.
Selbstbau-Wetterstation mit BME280-Modul um Temperatur, Feuchtigkeit und Luftdruck zu messen, sowie ein
GPS-Modul für genaue Zeit und Höhe über Meer.
Die Höhe wird benötigt um den gemessenen Druck in einen Druck auf Meereshöhe umzurechnen.
Ohne GPS-Modul kann man auch eine fixe Höhe für den Standort der Wetterstation eintragen.
Als Controller wurde ein Atmega1284P verwendet.
Zur Anzeige wird ein 4-Zeilen-LCD mit 20 Zeichen pro Zeile benutzt.
Quellprogramm: wetterstation.tar.gz
Austesten eines GPS-Moduls mit Hilfe eines Arduino-Nano (Atmega328p) und einem 4-Zeilen-LCD-Modul.
Die verwendeten Teile sind ein "GPS Modul NEO-6M kompatibel" von www.bastelgarage.ch und
ein "Arduino Nano", sowie das LCD-Modul TC1604A-05 von Pollin.
Für die Pegelwandlung der Seriellen Daten vom GPS-Modul wurde ein BS270 verwendet.
Das PPS-Signal vom GPS-Modul kann direkt an einen Atmega328p-Eingang angeschlossen werden (PB0/PCINT0).
Die seriellen empfangenen Daten entsprechen dem NMEA 183 Format. Zeit und Datum können vom $GPRMC Eintrag gelesen werden,
Position, Höhe und Geschwindigkeit vom $GPGGA Eintrag.
Im $GPGGA wird auch noch Empfangsqualität und Anzahl empfangene Satelliten angegeben.
Quellprogramm: gpsmodul.tar.gz
Eine kleine Schaltung mit einem ATiny13A, einfache Drähte um Wasserstand zu testen, und ein N-Channel MOSFET um eine kleine Pumpe einzuschalten. Damit kann man einige Blumentöpfe während den Ferien automatisch bewässern.
Quellprogramm: bewaesserung13.tar.gz
Eine etwas grössere Schaltung mit einem ATmega328P, vier Feuchtesensoren für die
Töpfe auf dem Balkon, und ein P-Channel MOSFET um eine Pumpe einzuschalten.
Damit kann man einige Blumentöpfe auf dem Balkon während den Ferien automatisch
bewässern.
(nur für auf dem Balkon weil keine Überlauf-Absicherung vorhanden!)
Um die aktuelle Feuchtigkeit zu kontrollieren und nur tagsüber zu bewässern,
wird noch ein Uhrenquarz und eine 4-Digit 7Seg-LED-Anzeige verwendet.
Dies ist mein erstes Projekt unter Verwendung von Kicad.
Quellprogramm: bewaesserung2.tar.gz
Aus finanzieller Sicht lohnt es sich nicht einen Laderegler selbst zu bauen.
Die einfachen käuflichen Regler sind inzwischen sehr günstig, die besseren sind auch nicht teurer als ein Selbstbau.
Aber ein Selbstbau lohnt sich, wenn man verstehen will wie es wirklich funktioniert.
Die einfachste Version eines selbst gebauten Ladereglers besteht aus einem Linear-Spannungsregler:
Die 0.1 Ohm Widerstände sind optional zum Messen der Ströme. R3 R4 könnte man noch anpassen
für andere Batteriespannungen.
Statt dem LM337 könnte man auch den LM317 nehmen und Polaritäten entsprechend vertauschen.
Ein auch noch einfacher Laderegler besteht aus einem kleinen Microkontroller und einem Leistungs-MOSFET
der als einfacher Schalter funktioniert:
Diese Art von Laderegler wird als PWM-Laderegler bezeichnet.
Das Schema ist vereinfacht (z.B. Programmierstecker und USB-Ausgang weggelassen) und in dieser Form nicht
getestet.
Die Widerstände R2 R3 bilden einen Spannungsteiler um die Batteriespannung zu messen.
Mit dem Ausgang PB4 wird dann, wenn die Spannung 14 Volt erreicht der P-Channel-MOSFET Q1 gesperrt.
Die Diode wird benötigt um Nachts die Batterie nicht über die Solarzelle zu entladen.
An PB1 könnte man noch einen weiteren P-Channel-Transistor schalten, um die Last abzuhängen
wenn die Spannung unter 10 Volt sinkt.
Mein neustes Projekt ist ein sogenannter MPPT-Laderegler:
Klick fuer grosse Version
Damit wird laufend nach dem optimalen Arbeitspunkt der Solarzelle gesucht (MPPT=Maximum PowerPoint Tracking).
Da die Leistung Strom mal Spannung ist, kann die Solarzelle mehr leisten wenn sie auf höherer Spannung
als die Batterie läuft.
Wenn z.B. die Solarzelle bei 18 Volt 1 Ampere liefert, dann kann eine Batterie bei 12 Volt mit 1.5 Ampere
geladen werden (ohne Verluste beim Spannungswandeln gerechnet).
Die aktuelle Schaltung läuft mit einem Atmega8A als Controller
und einem LP324N für die 4 Operationsverstärker.
Ein Atmega328P wäre wohl besser geeignet, und statt dem LP324N wollte ich eigentlich den LM324N nehmen.
(Der LM358 wäre vielleicht die noch bessere Wahl, da eigentlich nur 2 OPV benötigt werden.)
In der ursprünglichen Schaltung war der Messwiderstand zwischen TP4 und TP5, in aktueller Schaltung
abgeändert so dass es auch mit dem LP324N läuft.
Den Uhrenquarz habe ich noch nicht eingelötet, damit könnte man noch Strom sparen.
An PORTD könnte man noch ein LCD-Modul und einen Taster anschliessen und Programm entsprechend anpassen,
um dann auf Tastendruck z.B. Batteriespannung und aktuellen Ladestrom anzeigen zu lassen.
Aktuelle Schaltung+Software: mpptreglermega8a.tar.gz
Entwurf mit Atmega328P und LM358: mpptregler-mega328p.tar.gz
Links: MPPT Wikipedia , Messen von Leistungsinduktivitäten , Dimensionierung Step-Up-Konverter , MOSFET-Übersicht , ,
Weitere Ideen:
Quellprogramm: wifisens.tar.gz
Variante mit Prüfsumme: wifisenschecksum.tar.gz
Das Programm mit der Arduino-IDE auf dem Controller installiert, sollte beim Starten nach etwa 10 Sekunden
die grüne LED (RGB-LED) leuchten. (Wenn es rot leuchtet ist ein Fehler passiert.)
Am Computer (Linux, Ubuntu) wird Funknetzwerk aktiviert, dann nano-rp2040 ausgewählt und das
Passwort, welches in "wifisens.ino" mit "char pass[]" definiert wurde, eingegeben.
Wenn das LCD benutzt wird und alles klappt, erscheint dann der Hinweis "Device connected".
Das Programm zum die Sensor-Daten empfangen wird mit "make" compiliert und mit "./httpclient" gestartet.
Auf dem LCD erscheint dann in schneller Folge "new client" und "client disconn." während das
Programm die Daten 500 mal abfrägt und anzeigt.
Eine Echtzeituhr (RTC = Real Time Clock) ist ein Chip auf dem eine Uhr auch weiter läuft wenn die Stromzufuhr fehlt. Es wird dazu eine Stützbatterie benötigt.
Eine der einfachsten Version ist der DS1307. Dieser benötigt als Taktgeber noch einen
Quarz mit einer Frequenz von 32768 Hz.
Die Genauigkeit hängt von der Genauigkeit dieser Quarzfrequenz ab. Wenn ein Quarz
mit korrekter Load-Kapazität eingesetzt ist sollte es auf etwa 20 ppm genau sein.
Ein etwas teureres IC ist der DS3231SN der den Quarz schon mit eingebaut hat.
Es ist ein Temperaturkompensierter Quarz (TCXO) der eine Genauigkeit von 2 ppm haben sollte
(im Bereich von 0 bis 40 Grad Celsius).
Dazu hat er einen eingebauten Temperatursensor, der allerdings nur eine Genauigkeit von 3 Grad hat.
Zum Feinjustieren gibt es noch ein Register (Aging Trim oder Aging Offset genannt) in diesem RTC.
Eine billigere Version vom DS3231 ist der DS3231M. Dieser hat keinen Quarz eingebaut,
sondern ein MEMS-Resonator und ist etwas weniger genau (etwa 5 ppm nach Datenblatt).
Auch kann er nur eine genaue Frequenz von 1 Hz ausgeben,
im Gegensatz zur SN-Variante der auch Frequenzen von 1024, 4096, und 8192 Hz kann.
Ich habe Module mit diesen Chips (DS1307 und DS3231) drauf gekauft und festgestellt dass die Genauigkeiten wesentlich schlechter waren. Ich habe deshalb ein Programm geschrieben mit dem man diese RTCs etwas genauer testen kann. Da ist auch eine Software-Korrektur eingebaut um sehr starke Abweichungen zu korrigieren. Um letzte Stellzeit und Korrekturfaktor zu speichern werden beim DS3231 die Alarm-Register missbraucht. Beim DS1307 hat es ein RAM zu beliebigem Gebrauch, welches dann verwendet wird,
Quellprogramm: echtzeituhr.tar.gz
(Version 0.3)
Das Programm geht davon aus dass ein Arduino-Mega (Atmega2560) benutzt wird.
(für andere Controller wären noch kleine Änderungen nötig.)
Um Testresultate anzuzeigen wird ein 4-Zeilen-20-Zeichen LCD-Modul verwendet.
Zur Eingabe dienen 4 Tastschalter.
(Bisher nur mit einem DS3231M getestet, DS3231SN muss erst noch gelötet werden.)
Der Aufbau besteht aus einem Arduino-Nano, einer 16-Tasten Matrixtastatur, ein DS1307-Modul,
und ein 2-Zeilen-LCD welches über ein i2c-Backpack angesprochen wird.
Die hauptsächliche Schwierigkeit hier war das Ansprechen der SD-Karte (Micro-SD).
Die bisher einzige funktionierende Version ist die Library, die beim Arduino-IDE mit dabei war.
Um zu compilieren muss man das Hauptprogramm in Name.ino umkopieren und in einem Ordner der gleich heisst speichern.
Quellprogramm: datalogger.tar.gz
(Version 0.2)
Hier ist die Korrektur der stark abweichenden RTC noch realisiert indem letzte Stellzeit und Korrekturfaktor im EEPROM des Microkontrollers abgelegt werden.
Mit dem Programm (logger.cc) können Blutdruckwerte eingegeben werden. Dabei wird bei
mehreren Messungen hintereinander der Durchschnitt berechnet und dann zusammen mit Zeit und Datum
auf der SD-Karte in einer Textdatei gespeichert.
(Ich habe auch ein Programm unter Linux um diese Textdatei dann auszuwerten und eine Grafische Darstellung zu machen)
Mit dem zweiten Programm (logger2.cc) kann man Temperaturmessungen machen (mit I2C-Temperatursensor LM75A).
Also z.B. jede Minute eine Messung und dann im EEPROM des Controllers oder auf der SD-Karte speichern.
(noch ungelöstes Problem ist das anschliessende Auslesen des EEPROM)
Der Aufbau ist noch ein handverdrahteter Prototyp mit ArduinoMicro (Version mit einem Atmega32u4), Schrittmotortreiber von Pololu, zwei Magnetsensoren SS495A und einem Temperatursensor LM75a in zugeschmolzener Glasröhre. Damit wird die Temperatur im Reaktionskolben kontrolliert. Der Schrittmotor wird von einem Steckernetzteil mit 7V betrieben. Der ArduinoMicro enthält einen Spannungsregler für 5V. Damit wird die Elektronik betrieben. (Der Spannungsregler für 3.3V auf dem ArduinoMicro wird nicht verwendet.)
Die 3D-gedruckte Halterung der Spritze ist noch nicht optimal. Hat etwas viel Spiel, und Haltebügel damit Spritze nicht rausrutschen kann fehlt noch.
Mit 3 Tasten können Einstellungen gemacht werden, und eine weitere Taste für start und stop.
Der Status wird auf einem LCD-Textdisplay angezeigt (4 Zeilen a 16 Zeichen).
Quellprogramm: spritzpump32u4.tar.gz
Es können bisher 3 Akkus gleichzeitig getestet und geladen werden.
Dabei werden Entladekurven und Ladekurven dargestellt. Das Ganze ist in Assembler programmiert.
Es können verschiedene Akku-Typen verwendet werden. Bei neuen Typen die entsprechenden Daten
im Assemblerprogramm eintragen.
Quellprogramm: raspiakkulader.tar.gz
(Version 0.2)
Speichern der Entlade-/Lade-Kurven geht noch nicht weil die entsprechenden Assembler-Routinen
zum SD-Karte ansprechen noch fehlen.
Falls also jemand weiss wie man in Assembler die SD-Karte anspricht, wäre ich daran interessiert.
Quellprogramm: ledmatrix.tar.gz
Im Quellprogramm ist bisher nur ein Testprogramm und ein erstes einfaches Spiel (Nimm) enthalten.
Um zu compilieren waren ein paar kleine Änderungen in avra notwendig. Im Wesentlichen in device.c der neue Tiny10 definiert und der alte umbenannt. Entsprechende Dateien von avra-1.3.0-patch/ im folgenden Archiv nach avra-1.3.0/ kopieren und neu compilieren.
Der grösste Aufwand war es jedoch einen Programmer zum laufen zu bringen.
Ich habe es nach längerem Probieren für den All-AVR geschafft.
Dazu musste die Datei 41-atmega.rules nach /etc/udev/rules.d/ kopiert werden,
und ausserdem in der Datei /lib/udev/rules.d/69-libmtp.rules die Zeile, die mit
ENV{ID_MTP_DEVICE} beginnt auskommentiert werden.
Nach all diesen Vorbereitungen ein kleines Testprogramm für folgende Schaltung erstellt:
Die ersten 3 LEDs blinken lassen geht schon mal.
Nach setzen des Fusebits RSTDISBL blinkt auch die vierte LED. Neu programmieren
geht dann aber nur noch mit Jumper J1 entfernt und J2 auf 12 Volt gesetzt.
(Wie man RSTDISBL wieder zurücksetzt habe ich noch nicht rausgefunden)
Quellprogramm: tiny10.tar.gz
Eagle-Library: tiny10.lbr
avra1.3-patch: avra-1.3.0-patch.tar.gz (neue Controller: ATmega2560, ATmega1284P, ATtiny10)
weitere Patchs:
Es gab da beim Pollin-Bausatz ein paar kleine Unzulänglichkeiten:
Auf einem grossen Fernseher wackelte das Bild ziemlich stark.
Auf einem kleinen Monitor war die Schrift nur schlecht lesbar.
Es waren nur ASCII-Zeichen darstellbar, also keine Umlaute und keine Sonderzeichen.
Ich habe also den Atmega8 neu programmiert. Das Wackeln ist damit vollständig verschwunden.
Die Schriftgrösse ist jetzt im Programm per Option einstellbar. Dabei resultieren folgende
Zeilenanzahlen und Zeichen pro Zeile:
Mit kleiner Schrift: 22 Zeilen a 42 Zeichen
Mit grosser Schrift: 13 Zeilen a 27 Zeichen
Sehr grosse Schrift: 6 Zeilen a 16 Zeichen (die Zeichenbreite kann noch variert werden, so dass sich 14, 16, 18 oder 22 Zeichen ergeben)
Umlaute und diverse Sonderzeichen sind jetzt auch darstellbar.
Der Zeichensatz besteht aus total 256 Zeichen.
Eine Version für Grafikausgabe von 320x256 Punkten in Schwarzweiss habe ich auch programmiert. Dazu wird aber ein Atmega1284P und somit eine neue Schaltung benötigt.
Quellprogramm: rs232bas.tar.gz (aktuelle Version: 1.5)
Testprogramm: seriell.tar.gz Serielle Schnittstelle unter Linux austesten (MacOSX sollte auch gehen, Windows braucht noch Anpassungen)
Fonteditor: fonteditor.tar.gz Hilfsprogramm zum eigene Fonts erstellen,
die in rs232bas (Option in basi.asm) direkt verwendet werden können.
Quellprogramm: basirgb.tar.gz (aktuelle Version: 0.3)
Quellprogramm: irfernbedienung.tar.gz
Quellprogramm: funkthermometer2.tar.gz
Auswerteprogramm: datenauswerten.tar.gz
Quellprogramm: lcdtreiber.tar.gz
Neue Version mit AVR-Stamp jetzt auf separater Homepage: Selbstbau-Taschenrechner
Download: tarech2.tar.gz
Alte Funkuhr mit digitaler Elektronik: Funkuhr
Bisher kann man damit 4 Loks steuern (wäre aber leicht auf mehr erweiterbar), es gibt bisher 14 Geschwindigkeitsstufen (es fehlt nur noch das entsprechende Umschaltkommando um auch 28 Stufen zu unterstützen), und Licht ein/aus-schalten geht auch schon.
Download: bahnsteuerung.tar.gz
Vorgesehene Erweiterungen sind: Positionserkennung mit RFID (erste Versuche waren schon mal vielversprechend), Weichensteuerungen (geht bisher über diskrete Elektronik mit separaten Schaltern), und schliesslich automatisches Anhalten und wieder Anfahren am Bahnhof. (bisherige Anlage auf der Bastelecke)
Informationen übers DCC-Protokoll:
DCC auf Wikipedia
DCC-Standards (english) S-9.1 und S-9.2 sind wohl die wesentlichen Infos
00000000 = wenn Lok-Nr==0: Reset an alle Loks wenn Lok-Nr==0xFF: Idle an alle Loks, nichts weiter tun 01DC000S = wenn Lok-Nr==0: Stop an alle LoksDer Sender sollte mindestens alle 30ms ein Packet senden.
Das letzte Byte ist eine Prüfsumme. Exclusiv-Oder aller Bytes inklusive dieser Prüfsumme sollte 0 ergeben, sonst ist ein Übertragungsfehler aufgetreten.
Mit einem Microkontroller ist es nun aber auch ziemlich einfach die enthaltene
Elektronik anzusteuern. Als Steuersignal muss 50 mal pro Sekunde ein Puls
von 500 bis 2500 Microsekunden gesendet werden. Die Pulslänge definiert
dabei die gewünschte Position des Servos. Leider ist es von Hersteller
und Modell abhängig welche Werte welchen Stellwinkeln entsprechen. Selbst
zwei Servos vom selben Hersteller können da ganz verschieden sein. Sogar
die Drehrichtung kann unterschiedlich sein.
Hier eine Schaltung um zwei Servos zu testen:
Dafür wurde der kleinsten AVR-Kontroller (ATtiny13A) verwendet. Man
kann damit sogar 2 Servos gleichzeitig ansteuern. Um die Stellwerte (Anzahl
Microsekunden der Pulse) darzustellen war nur noch ein Pin frei.
Deshalb wurde noch kurz eine Schaltung entworfen mit der man ein LCD mit
nur 1 Pin ansteuern kann. Ein Tiny2313 empfängt die Daten über nur
eine Leitung und steuert das LCD dann ganz normal an.
Damit lässt sich also ein LCD-Modul zusammenbauen, das nur
3 Leitungen (Datenleitung + GND + 5V, in obigem Schema J3-1 bis J3-3) benötigt: dreidrahtlcd.png, lcd2313.asm
Das Programm für den ATtiny13A in obigem Schema ist pwmservo2.asm
Packet mit allen erwähnten Programmen: lcd3wire.tar.gz
Damit es für jede Position auf der Erde funktioniert müssen jeweils die
Geographischen Koordinaten eingegeben werden. Also z.B. für Zürich 47.367 Grad Breite,
8.533 Grad Länge.
Die Lage der Solarzelle (bzw. der Anlage falls alle Panel gleich ausgerichtet sind)
muss durch zwei Winkel angegeben werden:
Abweichung von der Ausrichtung gegen Süden in Grad. Positive Werte für westliche,
negative Werte für östliche Abweichung.
Winkel der Dachschräge. Also bei flach liegender Zelle 0 Grad, bei senkrechter Lage
(z.B. an Hauswand) 90 Grad.
Das Programm berechnet dann wahlweise einen Tagesverlauf, Monatsverlauf oder Jahresverlauf
bei Anname von idealem Sonnenschein, und bei Verwendung von einer Wetterstatistik.
(Wetterstatistik bisher nur für Zürich).
Die Wetterstatistik besteht dabei bisher nur aus Anzahl Sonnenstunden pro Tag für jeden Monat.
Das Programm ist noch nicht sehr ausführlich getestet. Bisher nur unter Linux getestet,
sollte aber auch auf andern Unix-ähnlichen Systemen wie z.B. MacOSX laufen.
Da es bisher nur Textausgaben macht, sollte auch eine Anpassung unter Windows einfach möglich sein.
Das Programm wird von einem Terminal aufgerufen. Mit den Optionen -? und -h gibt es genauere
Angaben zu allen möglichen Optionen.
Stand 27.6.2015
Der folgende Abschnitt (Versuch einer Nachführung) ist ein etwas älteres Projekt.
(Irgendwie fehlt da noch die Beschreibung des Ladereglers, den ich vor etwa 2 Jahren konstruiert habe)
Die grössere ist eine 10-Watt-Solarzelle. Aus der Fläche und
mit einer Solarkonstanten von 1kW/m2 gerechnet hat sie einen
Wirkungsgrad von 13%. Der Aufbau mit der kleinen Zelle ist ein Test um eine Nachführung auszuprobieren. |
Neue Solarzellen-Seite: sonnenenergie/index.html
Neue vereinfachte Version als Reisewecker
statt ein LCD werden zur Zeitanzeige nur 13 LEDs verwendet.
Die Anzeige ist damit im BCD-Binärformat (Beispiel im Bild 21:38).
Schaltung mit einem Atmega8A in SMD-Ausführung:
simpleleduhr.tar.gz
Das Gehäuse dazu ist mit dem 3D-Drucker ausgedruckt.
Überarbeitete erste Programmbeispiele für den Atmega8: avr/index.html (this site is in english)
Wichtige Abkürzungen:
IC : Integrated Circuit (Integrierte Schaltung)
DIL : Dual Inline (IC-Gehäuse mit Anschlüssen in 2 Reihen)
SPI : Serielles Programmier-Interface
ISP : In der Schaltung Programmieren
Typische ISP-Stecker haben diese Belegungen:
Ein Microcontroller ist ein vollständiger Computer in einem einzigen IC. Hier geht es um die AVR-Serie von Atmel. Eine ausführliche Beschreibung der AVR-Microcontroller ist unter mikrocontroller.net zu finden.
Es gibt unter anderem folgende Typen:
Atmega8 im DIL-28
Gehäuse: Atmega8 eigene Zusammenfassung
Atmega32 im DIL-40 Gehäuse: Atmega32 eigene Zusammenfassung
Atmega328P im DIL-28 Gehäuse
(Anschlussbelegung wie Atmega8, Speicher ähnlich wie Atmega32)
Atmega328p eigene Zusammenfassung
ATtiny13A im DIL-8 Gehäuse: ATtiny13A eigene Zusammenfassung (kleinster AVR-Kontroller)
ATtiny2313A im DIL-20 Gehäuse: ATtiny2313A eigene Zusammenfassung (ohne AD-Wandler aber kleiner als Atmega8)
Atmeag2560 ist im myAVR-Stamp256: Atmega2560 eigene Zusammenfassung (hat viele Ports und ist nur als SMD erhaeltlich)
Für die Programmierung unter Linux-Ubuntu werden folgende Packete
gebraucht:
avr-libc, avrdude, gcc-avr, binutils-avr, avra
Zum Programmieren mit dem Assembler (avra) werden noch Include-Dateien
gebraucht. Bei avra-1.3.0 sind schon einige Include-Dateien dabei.
Weitere können direkt bei Atmel erhalten werden.
(Notfalls das Programm für Windows runterladen und alle *.inc kopieren)
Mit avrdude wird das compilierte Programm auf den Microcontroller
übertragen.
Aufruf-Beispiele zum Auslesen des Atmega8 mit dem mySmartUSB:
avrdude -p m8 -c avr910 -P /dev/ttyUSB0 -v
avrdude -p m8 -c avr910 -P /dev/ttyUSB0 -U flash:r:flash.hex:i
avrdude -p m8 -c avr910 -P /dev/ttyUSB0 -U eeprom:r:eeprom.hex:i
Statt flash oder eeprom, geht auch noch lock, hfuse, lfuse und signature.
Der Widerstand des Drahtes ist von der Länge, der Querschnitt-Fläche und dem Material abhängig. In der Elektronik werden oft Widerstände mit bestimmten Werten gebraucht. Für kleine Werte wird ein dünner Draht aufgewickelt (Drahtwiderstand), für grössere Widerstandswerte werden Kohleschicht- oder Metallfilm-Widerstände verwendet.
Wenn ein Strom durch einen Widerstand fliesst wird er warm. Das heisst es
wird Energie umgesetzt. Je grösser die Spannung, je grösser
der Strom und je länger die Zeit umso mehr Energie.
Also gilt: E=U*I*t (E=Energie)
Leistung ist als Energie pro Zeiteinheit definiert,
also gilt P=E/t und somit: P=U*I
Siehe auch Formelsammlung
(Diese Seite ist noch in Bearbeitung)