Arduino Pro Mini 3.3V programmieren (mit Arduino Uno oder USB-Programmer)

  • 12

Arduino Pro Mini 3.3V programmieren (mit Arduino Uno oder USB-Programmer)

Ausdrucken Ausdrucken

Arduino Pro Mini

Nehmen wir uns mal einen Arduino Pro Mini in der Variante mit 3.3V vor, um ihn zu programmieren.
Wie auch schon im Blog zum programmieren eines ATtiny-Mikrocontrollers zeige ich Euch wie Ihr entweder mit einem Arduino (Uno) oder einem USB-Programmer einen Pro Mini mit einem Sketch versehen könnt. Dort beschreibe ich auch ausführlich den USB-Programmer samt Kabelanschluss.

 

Ganz wichtig!!! Ihr braucht unbedingt eine Stromversorgung die konstant nicht mehr als 3.3 Volt liefert, sonst könnte es sein, dass Ihr Euren Pro Mini schrottet. Die USB-Buchse Eures Computers liefert je nach USB-Port eine Spannung, die darüber liegt.
Benutzt Ihr die 5V-Variante, könnt Ihr sie ohne Spannungswandler direkt mit dem Strom aus der USB-Buchse versorgen.

Folgende Übersicht zeigt Euch die Spannung und die Stromstärke an, die Euer USB-Port bereitstellt.

  • 4,40 V bis 5,50 V an einem Low Powered Port (100 mA)
  • 4,75 V bis 5,50 V an einem High Powered Port (500 mA)
  • 4,45 V bis 5,50 V an einem USB 3.0-Port (900 mA)

Ihr könnt nun entweder zwei AA(A)-Batterien als Stromquelle nehmen, dann habt Ihr eine Spannung von rund 3 Volt, oder Ihr baut Euch einen kleinen Spannungsregler auf einem Breadbord auf, oder lötet gleich einen auf eine Lochrasterplatine (üben, üben, üben 🙂 ), wenn Ihr regelmäßig 3.3 V Mikroprozessoren auf dem Breadboard programmieren möchtet.
Schaut Euch hierzu die folgenden zwei Seiten an. Dort findet Ihr einen Spannungsregler von 9V->5V->3.3V und einen kleinen, den man wunderbar für den USB-Port verwenden kann, da er die rund 5V des USB-Anschlusses ohne großen Verlust in 3.3V wandelt.

fingerzeig Spannungsregler 9V
fingerzeig Spannungsregler 5V

 

Programmieren mit dem USBasp-Programmer

Schauen wir uns zuerst einmal die Pinbelegung an, um die Leitungen zu finden, die wir zum programmieren benötigen:

ProMini-Pinout

Somit ergibt sich folgende Belegung:

Programmer Arduino Pro Mini
MOSI Pin 1 <-> Pin 11
RESET Pin 5 <-> RST
SCK Pin 7 <-> Pin 13
MISO Pin 9 <-> Pin 12
VCC Pin 2 <-> VCC
GND Pin 4 <-> GND

 

Los gehts. Verkabeln wir nun unseren Pro Mini nach der ermittelten Pinbelegung.

Zum Vergrößern Bild anklicken

Zum Vergrößern Bild anklicken

Die vier benötigten Datenleitungen sind mit den roten Kabeln auf dem Breadboard verkabelt. +5V und GND laufen vom Programmer direkt in den Spannungswandler und regeln sie auf konstante 3.3 V herunter. Von dort aus geht es mit +3.3V und GND an die entsprechenden Pins des Pro Minis.

Jetzt verbinden wir den Programmer mit unserem USB-Anschluss und laden unsere Arduino-IDE.

Arduino-IDE-ProMini

Zum Vergrößern Bild anklicken

In der IDE gehen wir auf „Werkzeuge“ und wählen als „Board“ das „Arduino Pro or Pro Mini“ aus.
Als „Processor“ den „ATMega328 (3.3 V, 8 MHz)
Dort könnt Ihr auch einen grundlegenden Unterschied zur 5 Volt Variante erkennen, denn die 3.3V-Variante hat auf Grund ihrer geringeren Spannungsaufnahme nur einen 8Mhz-Quarz.

Der „Port“ ist egal, aber bei „Programmer“ müssen wir „USBasp“ auswählen.

 

 

Im Anschluss laden wir einen kleinen Testsketch hoch. Da es sich ja um einen ATMega328 handelt, ist die Pinbelegung wie auf unserem Uno nahezu gleich. Daher können wir auch das Beispielsketch aus „Datei“ -> „Beispiele“ -> „01. Basics“ -> „Blink“ unverändert übernehmen. Auf dem Board ist auch eine SMD-LED auf Pin 13.

Hier ist aber der Sketch noch einmal:

Wenn der Prozessor unter „Werkzeuge“ und der Programmer korrekt festgelegt wurden, können wir unseren Sketch auf den Pro Mini schieben.

Achtung: Wenn Ihr nur auf  „Sketch“ -> „Hochladen“ oder den Rechtspfeil anklickt, wird folgende Fehlermeldung ausgegeben:

avrdude: ser_open(): can’t open device „\\.\COMx“: Das System kann die angegebene Datei nicht finden.

Das ist völlig normal, denn am COMx-Port hängt ja derzeit kein Gerät. Wir müssen entweder „Sketch“ -> „Hochladen mit Programmer“ oder die Großschreibtaste gedrückt halten und mit der Maus den Rechtspfeil auswählen, damit unser Sketch über den Programmer auf den Pro Mini kopiert wird.

Wenn der Sketch fehlerfrei kompiliert und übertragen wurde, fängt unsere eingebaute rote LED an zu blinken und wir haben unseren ersten Pro Mini 3.3 V mit einem Programmer programmiert.

Zum Vergrößern Bild anklicken

Zum Vergrößern Bild anklicken

 

Programmieren mit dem Arduino Uno als Programmer

Vom Grundprinzip zum programmieren mit einem USB-Programmer ist das hier nicht viel anders. Im Internet gibt es so viele Anleitungen die alle darauf abzielen, dass man auf seinem Uno den Prozessor runtermacht – so fern man wie ich einen mit DIP-Sockel hat und den man im Gegensatz zu den SMD-Versionen auch runtermachen kann, aber das ist irgendwie gar nicht nötig. Wir gehen genau so vor, als würden wir einen ATtiny programmieren mit einem Uno und reißen ihm nicht seinen Prozessor von der Platine.

Als erstes müssen wir jetzt wissen, wo auf unserem Uno die entsprechenden Datenleitungen sind die wir benötigen. Das wären MOSI, RESET, SCK und MISO. So wie natürlich +3.3 V und GND.

Arduino-Uno-R3-Pinbelegung

Zum Vergrößern Bild anklicken

Parallel wieder das Pinout zum Pro Mini:

ProMini-Pinout
Somit ergibt sich folgende Belegung:

Arduino Uno Arduino Pro Mini 3.3 V
MOSI Pin 11 <-> Pin 11
RESET Pin 10 <-> RST
SCK Pin 13 <-> Pin 13
MISO Pin 12 <-> Pin 12
3.3V <-> VCC
GND <-> GND

 

Haben wir auf unserem Uno noch kein ArduinoISP-Programmer-Sketch aus den Beispielen hochgeladen, so müssen wir das als Erstes tun.
Hierzu öffnen wir den Sketch unter „Datei“ -> „Beispiele“ ->“11.ArduinoISP“ -> „ArduinoISP“ und übertragen ihn wie gewohnt per USB auf unseren Uno.
Jetzt ist er bereit und kann weitere Chips programmieren.

Jetzt können wir unser Breadboard mit dem Pro Mini drauf mit dem Uno verbinden. Achtet darauf, dass Ihr 3.3 V und nicht 5 V nehmt.

Zum Vergrößern Bild anklicken

Zum Vergrößern Bild anklicken

Hier brauchen wie definitiv einen Elektrolyt-Kondensator mit einem Wert von rund 10 µF den wir zwischen GND und dem Reset-Pin des Arduinos setzen. Unbedingt auf Polarität achten! GND = Minus, Reset = Plus.
Als ich die Schaltung ohne ELKO verwenden wollte, kam es beim Hochladen eines Sketches immer zu folgender Fehlermeldung:

Problem beim Hochladen auf das Board. Hilfestellung dazu […]
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x70

Abschließend verbinden wir unseren Arduino mit dem USB-Kabel mit dem Computer und laden das Standard-Blink-Sketch wie hier aufgeführt:

Ich habe ein Delay von 100 ms eingefügt, da wir im vorherigen Versuch mit dem USBasp-Programmer ein Delay von 1000 hatten. Somit blinkt jetzt unsere LED viel schneller.

Arduino-IDE-ProMiniBevor wir unser Sketch auf den Pro Mini hochladen können, müssen wir in der IDE  „Werkzeuge“ anklicken und wählen als „Board“ das „Arduino Pro or Pro Mini“ aus.
Als „Processor“ den „ATMega328 (3.3 V, 8 MHz)
Der „Port“ ist egal, aber bei „Programmer“ müssen wir „Arduino as ISP“ auswählen.

Nun laden wir unseren Sketch hoch, verwenden dafür aber entweder unter „Sketch“ den Menüpunkt „Hochladen mit Programmer„, oder halten unsere Großschreibtaste gedrückt und klicken den „Hochladen“-Pfeil an. Es erscheint dann auch nicht wie gewohnt der Text „Hochladen“, sondern „Hochladen mit einem Programmer“.

Wenn alles fehlerfrei kompiliert und hochgeladen wurde, stellen wir etwas ungewöhnliches fest: Auf dem Uno und auf dem Pro Mini blinken die LED synchron.
Das liegt aber nur daran, dass ja beide Prozessoren mit dem Pin 13 verbunden sind. Euer Sketch ist nicht auf dem Uno gelandet, sondern auf dem Pro Mini.

Zum Vergrößern Bild anklicken

Zum Vergrößern Bild anklicken

Abschließend trennen wir nun den Uno vom Pro Mini und versorgen diesen mit einer externen Stromquelle. Ich habe hierzu wieder meinen Spannungswandler genommen, an dem ich eine 9 V-Blockbatterie dranhängen habe. Diese werden für den Pro Mini auf 3.3 V umgewandelt und wir sehen, dass unser Blink-LED-Sketch auch ohne angeschlossenen Arduino Uno als Programmer wieder läuft.

Zum Vergrößern Bild anklicken

Zum Vergrößern Bild anklicken

So, das waren zwei der Wege wie man weitere Prozessoren programmieren kann. Man braucht immer einen Programmer, wenn man „nackte“ Prozessoren programmieren will. Dabei ist es gleich, ob wir den Arduino verwenden und ihn mit einem Sketch zu einem Programmer umfunktionieren, oder beispielsweise den USBasp-Programmer verwenden, der ja ebenfalls auf seinem verbauten ATtiny ein Programm installiert hat, was ihn auch zu einem Programmer macht.


12 Comments

Thomas

22. März 2017 at 12:30 am

Oh Danke so schnell eine Antwort.
also mit Arduino Habe ich eigendlich nichts am Hut.
Ich bin So denke ich zumindest Ein Modellbauer. und möchte ,wie bestimmt schon viele andere vor mir einen ganz normalen Fernsteuersender mit einem Spektrum 2,4 Ghz umbauen.
Im Netz findet man darüber 100te Seiten. und 99 % beschreiben alle das selbe. Mini pro 3,3v wegen der Modulspannung fertige Hex fies findet man auch und Schaltung (immer die gleiche ist auch dabei.
also los dachte ich.
mini gekauft, usbap Brenner habe ich -Software drauf auf das Board Verkabelbelt .aber leider bindet nicht.
Bei weiteren Suchen kam ich dann auf diese Seite und habe das mit dem Spannungsregler gelesen.
Deshalb habe ich gefragt
Gruß
Thomas

    Ronin

    22. März 2017 at 8:54 pm

    Hallo Thomas,

    Verwendest Du auch die nRF-Module? Falls ja, dann empfehle ich Dir mit einem multimeter nachzumessen, ob die wirklich 3,3V bekommen. Wie gesagt war das bei mir damals das Problem, dass ich sie nicht verbinden konte, weil sie nicht gesendet haben, da 3V zu wenig waren.

    Was auch sein kann ist, folgendes: Hast Du einen ELKO mit 10uF vor dem nRF-Modul zwischen VCC und GND? Die Plus-Module sind da empfindlich und brauchen den unbedingt, sonst funken sie auch nicht.

    Hoffe, das hilft Dir.

    Viele Grüße,
    Michael

      Thomas

      22. März 2017 at 11:41 pm

      Hallo Michael,
      Ich denke ,das eine Mail eine bessere Methode ist als Deine Kommentar -Liste, Die wäre meiner Meinung nach Schnell Vollgeschrieben mit Sachen ,die sehr wahrscheinlich keinen außer mir Interessiert. Oder was meinst Du ? es ist ja Deine Web –Seite .
      Ich muss erst einmal gestehen ,das ich bis eben noch nie etwas von nRF-Module gehört habe.
      nein Ich bin dabei einen Normalen und defekten Sender. selbst aufzubauen und habe mir ein original Spektrum 2,4 Ghz Sendmodul besorgt.
      Eine Abhandlung meines Vorhabens gibt es Hier: Wenn Du dir diesen link http://www.xyleroo.de/futaba2dsm.html mal ansehen würdest und mir Deine Meinung ob es machbar ist oder nicht. mitteilen würdest,
      Wo die Weitere Kommunikation stattfinden Soll überlasse ich Dir.
      Gruß
      Thomas

        Ronin

        23. März 2017 at 5:55 pm

        Hi Thomas,

        ich schicke Dir gleich mal eine eMail bzgl. dieses Themas. Du hast Recht. Es würde zum normalen programmieren eines Pro Minis nicht passen.
        Aber vielleicht können wir ja später eine neue Seite anlegen, wenn Dein Vorhaben gelungen ist. Denke mal, dass das dann sicher noch ein paar weiteren Lesern helfen könnte.

        Viele Grüße,
        Michael

      Nader

      29. März 2017 at 11:04 pm

      Hallo Ronin,
      danke erst einmal für den coolen Post! Mal wieder mega informativ 🙂

      Inwiefern sind 3V zu wenig? Ich wollte einen Atmega329p-au in einem tqfp-package per Arduino programmieren, und ihn dann „standalone“ mit einer 3V Batterie betreiben. Ist das so nicht möglich? Wäre wirklich schade, da ich bei Digikey schon einen passenden Warenkorb erstellt habe und auch teilweise auch schon Schaltpläne fertig sind 😀
      Würde mich jedenfalls über eine Antwort freuen.

      Viele Grüße und einen schönen Restabend noch 🙂

        Ronin

        31. März 2017 at 11:21 am

        Hi Nader,

        Vielen Dank. Sorry, bin ein bißchen spät mit der Antwort, aber die DVB-T Abschaltung, bzw. Umstellung auf DVB-S lief nicht problemlos.

        Nein, die 3 Volt die zu wenig waren, bezogen sich auf das nRF-Modul, nicht auf den Atmega. Der Atmega läuft zwischen 1,8V-5,5V problemlos.

        Viele Grüße,
        Michael

Thomas

21. März 2017 at 6:22 pm

Hallo,
Ich habe da mal eine Frage zum Mini Pro 3,3 V.
das board hat doch einen Low drop Spannungsregler drauf und an RAW kann man 12 Volt anlegen.
Warum Benötigt man dannnoch einen Spannungsregler ist doch irgendwie doppelt oder

    Ronin

    21. März 2017 at 8:12 pm

    Hi,

    ja und nein. Einerseits hast Du Recht, dass man an RAW bis zu 12V anlegen kann, aaaaber entweder wird dadurch der Pro Mini seeehr heiß (man bedenke, dass man 8,7V verbraten muss um 3,3V zu erhalten und bei theoretischen 200mA Gesamtverbrauch der Schaltung, werden hier rund 0,9 Watt in Wärme umgewandelt), oder er lässt gleich richtig Dampf ab, wenn man einen schlechten China-Klon erwischt hat und dann musst den zurückschicken, damit die neuen Rauch in den Regler einfüllen können. 🙂

    Auch ein Punkt ist, welchen Strom Deine Stromquelle zur Verfügung stellen kann. Ist er stabilisiert oder unstabilisiert, mit/ohne Welligkeit, Wechselspannung …

    Man kann es auf eigene Gefahr testen, aber eigentlich sollte man nicht an der falschen Stelle sparen und entweder einen Linearregler (7809, 7805, LP2950-50 besser noch einen LM371) davorschalten, oder man nimmt einen StepDown-Konverter. Da gibts ja fertige Konverter für wenige Euros und auch die Linearregler kosten nur ein paar Cent und der Pro Mini freut sich über ein langes Leben.

    Kleines Beispiel für einen Uno: Ich habe 4 verschiedene Uno-Boards. Angeschlossen war jeweils ein nRF24L01+-Funkmodul, welches 3,3V benötigt.
    Kein Problem. Via USB wurde der Uno mit Strom versorgt und am 3,3V-Pin das Funkmodul angeschlossen. 3 von 4 Unos konnten nicht die vollen 3,3V zur Verfügung stellen, so dass die Funkmodule nicht senden konnten.
    Ich habe laaange nach dem Fehler gesucht. Eigener Spannungsregeler LP2950-33 davor und direkt von VCC entnommen und es gab keine Probleme mehr.
    Ach ja, alle 4 Unos sind Klone. 🙂

    Gruß,
    Michael

Alpendohle

27. Januar 2017 at 12:33 pm

Wieder was gelernt. Danke !

    Ronin

    27. Januar 2017 at 7:54 pm

    Freut mich sehr, vielen Dank.

    Viele Grüße,
    Michael

Kfiiis

12. Januar 2017 at 7:58 pm

Hallo, warum kann ich eigentlich die Datenleitugnen „ungewandelt“ an den Pro Mini geben ? Aus dem Arduino Uno kommen z.B. als HIGH durchaus 4V oder mehr raus -> während das ProMini ja nur mit 3.3V läuft… ? Kracht es da nicht oder warum kann ich 4V+ auf ein 3V board geben (als Daten) ?

    Ronin

    12. Januar 2017 at 10:23 pm

    Hi Kfiiis,

    das liegt daran, dass einige Pins (unter anderem die Eingänge, außer A4 und A5 im Analogbetrieb) 5V tolerant sind.
    Steht auch irgendwo im Datasheet, nur ich weiß jetzt leider nicht mehr genau auf welcher Seite.
    Am besten wird wohl aber sein, wenn man mit nem Widerstand 1K-10K ein bißchen die Spannung drosselt.

    Viele Grüße,
    Michael

Schreibe einen Kommentar

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.