Archive for the ‘Uncategorized’ Category

8051 Quickstart using STC MCU

Friday, July 9th, 2010

This article describes the first steps how you start programming a 8051 compatible MCU (aka C51), in this case the STC12C5412AD using a USB-to-TTL adaptor.

stc_usb.jpg

Why 8051/C51 ?

  • very popular (you can find plenty of code examples)
  • simple to program (simple register maps etc.)
  • cheap
  • Todays 8051 compatible MCUs have most needed integrated (flash memory, EEPROM, ADC, UART, PWM, …)
  • almost nothing has changed since its beginning (same registers - the 1980’s code you find still works)


Why STC MCU?

  • cheap
  • easy to flash: no external programmer is required - TX/RX line is used to flash the MCU

What you need:

  • STC MCU (STC12C5412AD, STC12C5620AD, …) - here we using the LQFP-32 pins version (right chip in the picture above)
  • USB-to-TTL (5V) adaptor like in the picture above (these can be found easily via eBay) - my adaptor uses the popular CP2102 USB-to-UART bridge
  • Wire, adaptor board, …
  • a PC

Steps:

  1. Connect the STC MCU to the USB-to-TTL adaptor:
    USB-adaptor TX <—> MCU RX
    USB-adaptor RX <—> MCU TX
    USB-adaptor +5V <—>  MCU VCC
    USB-adaptor GND <—> MCU GND
    That’s too easy isn’t it? :-)
  2. Download STC ISP software v4.80 (Chinese user interface) - I needed v4.80 for my MCU, newer MCUs need newer ISP versions!
  3. Download Keil uVision IDE and Compiler (evaluation)
  4. Install uVision, create a new project “Atmel AT89S52″, no startup file. Under Project options, set OSC frequency, and check “hex file” output.
  5. In uVision, create a new file (test1.c), and add it to the project.  Write your first MCU program in this file.
  6. Add the corresponding STC MCU header file to your project and include it (e.g. STC12C5410AD.H or STC12C5620AD.H). They contain the port and memory definitions for your type of MCU. You can find them in the download below.
  7. Compile to .hex file
  8. Upload .hex file using the ISP software.  Important: the STC MCU automatically starts reading and flashing the program via RX line when a certain sequence is sent at start up - therefore, you first need to start the ‘Download’ in the ISP software, and _after_ that turn on the MCU !  Also, both the ISP software and MCU will automatically handshake a good baud rate  (e.g. if the internal 6 Mhz OSC is used, the ISP software will probe a ‘good’ baud rate, so that the MCU will start downloading).

Downloads:

stc_demo.zip
(shows how to initialize the UART, ADC and successively sends the value of ADC0 via UART to the PC)

mySmartUSB goes Bluetooth

Saturday, June 12th, 2010

Dieser Artikel beschreibt, wie man ein Bluetooth-Modul mit einem ISP-Programmer (hier: das ‘mySmartUSB-Modul’ der Firma Laser & Co. Solutions GmbH) verbindet und auf diese Weise Mikrocontroller via Bluetooth mit dem PC programmieren und zusätzlich Daten mit dem Mikrocontroller und dem PC austauschen kann. Diese Möglichkeit, beides kabellos zu bewerkstelligen (Mikrocontrollerprogrammierung  -und RS232-Datentransfer) , dürfte relativ einzigartig sein!

Ausgangslage

Manchmal wäre es ‘Nice-to-have’, manchmal geht es aber auch nicht anders:  man möchte das Kabel zwischen Mikrocontroller und PC loswerden. In unserem Fall sollte ein mobiler Roboter per Funk vom PC programmiert und später dessen Sensordaten im Betrieb an diesen PC übertragen werden.

Warum überhaupt Bluetooth?

  • es gibt kostengünstige USB-Bluetooth-Dongles für den PC (wenige Euro)  (PC-seitig braucht man also nichts entwickeln!)
  • Bluetooth simuliert eine serielle Schnittstelle (COM-Port) am PC - man kann also alle bisherigen Tools und  Programme weiterverwenden  (PC-seitig bleibt also alles beim Alten!)
  • die Reichweite ist akzeptabel (100-150 m , Bluetooth class1)
  • es gibt kostengünstige (ca. 15 €) Bluetooth-Module mit 3.3V TTL UART-Schnittstelle (4 Pins werden davon benutzt:  3.3V VCC,  GND,  TX und RX)

Warum mySmartUSB als ISP-Mikrocontroller-Programmer?

  • er unterstützt die gängigsten Programmierprotokolle (AVR910/AVR911)
  • einziger ISP-Programmer (meines Wissen), der auch als UART-Bridge fungieren kann und diese ist dazu auch noch per UART-Kommando schaltbar(!) (mehr dazu unten) - den USB-zu-UART Konverter (CP2102) brauchen wir hier jedoch nicht

Verwendete Komponenten

  1. myAVR mySmartUSB (v2.10) zur µC-Programmierung/UART Datentransfer mit diesem
  2. myAVR Board mit ATmega168
  3. Bluetooth-Modul BTM220
  4. 3.3V Spannunsgregler (LF33CV), 2 Elkos, 4 Widerstände, 1 LED, 1 IC (74HCT14N) für den Bluetooth-Adapter

Schritt 1 :  Bluetooth-Adapter für mySmartUSB bauen

Für diesen Zweck wird hier das Rayson Bluetooth-Modul ‘BTM220A’ verwendet, welches eine UART-Schnittstelle verwendet. Da dieses Modul jedoch mit 3.3V Spannungsversorgung arbeitet, wird ein 3.3V Spannungsregler sowie ein 3.3V zu 5V TTL Pegel-Wandler (für RX/TX) eingesetzt. Die genaue Adapter-Schaltung kann z.B. dem Blog von Martin Hänsler entnommen werden. Zur Pegel-Wandlung der TX- bzw. RX-Leitungen wird dort ein invertierendes Schmitt-Trigger IC verwendet, ein Spannungsteiler sorgt bei der RX-Leitung für den 3.3V Level.

Nach einer nachmittaglichen Bastelarbeit könnte das vollständige Bluetooth-Modul dann z.B. so aussehen :-)

bluetooth.jpg

Ergebnis: Bluetooth-Modul mit 5V TTL UART (mit vier Anschlußpins: 5V VCC, GND, TX und RX)

Schritt 2 :  TX und RX am mySmartUSB suchen

Im nächsten Schritt soll mit diesem Bluetooth-Modul ein ATmega168 auf einem myAVR Board programmiert werden können (natürlich über Bluetooth). Zusätzlich soll aber auch das ATmega UART-Modul mit dem PC über Bluetooth angebunden werden, so dass man kabellos Daten mit dem Mikrocontroller austauschen kann. Für beide Zwecke bietet sich die ‘mySmartUSB-Tocherplatine‘ des myAVR-Boards geradezu an, da es über einfache UART-Kommandos zwischen Programmier- und Datenmodus umschalten kann.

Ein Problem muss allerdings noch gelöst werden: der Programmer verfügt offensichtlich nur über einen USB-Anschluß als Programmierschnittstelle, die TX/RX-Leitungen zum Programmer hin müssen also ausfindig gemacht werden -vom CP2102-USB-zu-seriell Konverter Baustein ausgehend findet man RX an Pin14 und TX an Pin15 der mySmartUSB-Steckpfosten

(Anmerk.:  in der mySmartUSB Dokumentation findet man andere TX und RX Pins für die UART-Bridge - diese können aber nicht zum programmieren sondern nur für den Datenaustausch verwendet werden).
mysmartusb.jpg

Die benötigte 5V Spannungsversorgung für den Spannungsregler des Bluetooth-Moduls muss man sich ggf. über das myAVR-Board holen - ohne USB-Anschluß scheint der Programmer nur etwa 4V über das myAVR-Board zu bekommen.

Schritt 3 :  mySmartUSB und Bluetooth-Adapter verbinden

Dann kommt der spannende Augenblick beide Module miteinander zu verbinden :-)
Wichtig: RX vom Bluetooth-Modul geht auf TX vom mySmartUSB  (was der eine sendet, muss der andere empfangen)

mysmartusb_bluetooth.jpg

Und siehe da!  Ein erstes Austesten mit den bisherigen myAVR-Tools und Programmen zeigt : alle Funktionen laufen wie erwartet!

Im nächsten Schritt werde ich wohl die mögliche Reichweite dieses Bluetooth-Moduls austesten - 100 Meter im Freien sollten damit machbar sein :-)

Fazit:  …ich bin mir sicher:  so ein fertig aufgebautes Bluetooth-Modul wäre garantiert eine ideale Ergänzung des myAVR-Sortiments   ;-)

Do-It-Yourself Elektrofahrrad

Tuesday, June 16th, 2009

Man nehme:

  • ein 28″ Damen-Fahrrad
  • einen Nine-Continent Vorderradnabenmotor 250 W, 36V
  • Motor-Steuerelektronik
  • Pedal-Sensor
  • und Bremsschalter  (alles zusammen 180 EUR als Bausatz)
  • 3 x 12 V, 7Ah Blei-Gel-Akkus (60 EUR)


…und heraus kommt ein Elektro-Bike :)

nc1

nc2

nc1

Das Gesamtgewicht (Fahrrad, Elektromotor und Akkus) liegt für diese Variante bei ca. 30 kg.Zum Fahren (max. 25 km/h, max. 250 W, im Pedelec-Betrieb, d.h. Einschalten des Motors durch Treten) braucht man keine Versicherung.

Die erreichbare Höchstgeschwindigkeit liegt bei 25 km/h (mit aktivierter Begrenzung), und bis zu 40 km/h (ohne Begrenzung).

Endlich machen Gebirgsfahrten (hier 19% Steigung an der steilsten Stelle) mit dem Drahtesel Spaß :)

Reichweite: 17. Juni 2009 - Heute wurde die erste “Langstrecke” mit dem E-Bike (mit dem vollen 7Ah Akku) gemacht, 13.6 km lang (incl. kleineren ‘Bergen’) - mit Unterstützung in den Pedalen hat der Akku gerade so gereicht :) - beim letzten Anstieg setzte die Steuerung ab und zu aus - ein Zeichen dafür, dass der Akku langsam schlapp macht und geladen werden muss.  Fazit: Für noch längere Strecken sollte ein 10Ah Akku oder besser verwendet werden.

Energie verbrauchen sie alle

Wednesday, June 10th, 2009

Moderne Computer, Fax-Geräte, TVs verbrauchen immer weniger Energie, stimmt’s? Zumindest möchte uns das die Industrie weismachen. Irgendwie möchte man das für seine eigenen Elektrogeräte auch nachvollziehen können - also in den Baumarkt marschieren, Energiemeßgerät (4 EUR) kaufen und das Meßgerät zwischen Verbraucher und Elektrogerät schalten und schon kann die Messung losgehen:

Elektrogerät Strom (Ampere) Leistung (Watt)
Apple MacBook 0,1 25
Apple MacBook im Standby 0 0
Acer Aspire 1650 Notebook 0,19 48
Acer Aspire 1650 Notebook im Standby 0,03 7
Desktop PC 0,7 160
Desktop PC im Standby 0,11 23
Oki 2520 MFP Multifunktionsfax 0,19 44
Oki 2520 MFP Multifunktionsfax im Standby 0,17 39
Xmas Beleuchtung 0,06 7
TV Set im Standby 0,12 27
Router 44
Altes Fax aus den 1980er Jahren 0,3 65
Altes Fax aus den 1980er Jahren im Standby 18

Wie ich finde, ist das ein interessantes Ergebnis: Der Desktop PC im Standby verbraucht beinahe genauso viel Energie wie ein MacBook im Vollbetrieb - ein altes Fax von 1980 verbraucht im Standby weniger als die Hälfte eines modernen Fax-Gerätes im Standby - und ein Fernseher verbraucht im Standby mehr als ein MacBook im Vollbetrieb… Moderne Geräte sind (bis auf wenige Ausnahmen) im Standby erstaunlich energiehungrig.

Mein Vorschlag: ein weltweites Siegel für den Konsumenten für jedes Elektrogerät mit Angabe des Energieverbrauchs (Watt Vollbetrieb/Standby), nicht zuletzt damit wir unser weltweites CO2 Ziel erreichen?

Teddies im 21. Jahrhundert

Saturday, January 24th, 2009

Teddy