Microcontroller Projekt für Anfänger

#3586487
Lesenswert?

Hallöchen,
ich bin hier neu im Forum und suche Rat bei den "großen".

Zum Projekt: ich habe eine Technische Anwendung, die eine relativ 
einfache Signalverarbeitung erfordert:

In der Basisversion werden zwei digitale Eingänge, sowie ein digitaler 
Ausgang benötigt.
Die Eingänge bekommen relativ schnelle Signale, sprich z.B. einen 10ms 
Impuls, also der verarbeitende Mikrocontroller sollte nicht so langsam 
sein das es zu Interrupts kommt. Über den Ausgang soll ein N-Channel 
Mosfet gesteuert werden.

Ursprünglich habe ich das ganze mal als Logikgatter Schaltung entworfen, 
aber einen gravierenden Fehler gemacht weshalb mein Entwurf wertlos ist. 
Nun hoffe ich das man mit einem verhältnismäßig einfachem 
Mikrocontroller das ganze regeln kann. Parallel habe ich bereits 
angefangen den Algorithmus in C zu programmieren und versuche ihn zu 
Testzwecken auf meinen ASURO zu ziehen, das dauert aber noch ein paar 
Tage.

Nun zu eigentlichen Fragestellung:

-Welchen, möglichst kleinen (Bauform, Platzmangel im Anwendungsgebiet) 
Mikrocontroller könnt ihr mir da empfehlen?

-Kann mir jemand so einen Mikroprozessor flashen? Ich wollte mir nicht 
für einen einzigen ein ISP Board (???) anschaffen...
Gast #3586492
Lesenswert?

Wugge D. schrieb:
> Die Eingänge bekommen relativ schnelle Signale, sprich z.B. einen 10ms
> Impuls,

lächerlich langsam für nen µC ;)

Wugge D. schrieb:
> Welchen, möglichst kleinen (Bauform, Platzmangel im Anwendungsgebiet)
> Mikrocontroller könnt ihr mir da empfehlen?

z.B. Attiny 25/45/85


Wugge D. schrieb:
> Kann mir jemand so einen Mikroprozessor flashen? Ich wollte mir nicht
> für einen einzigen ein ISP Board (???) anschaffen...

du wirst sicherlich den ein oder anderen kleinen Fehler im Programm 
haben oder kleine Änderungen machen wollen.
Du wirst also nicht drum herum kommen, den µC öfter zu flashen.

D.h. du holst dir z.B. so was:
http://www.ebay.de/itm/Neu-USB-ISP-USBASP-Programmiergerat-Programmierer-fur-Atmel-AVR-ATMega-51-ATTiny-/261100135914?pt=Bauteile&hash=item3ccac7e5ea

oder wenn du willst, dass es auf jeden Fall problemlos funktioniert, den 
MKII von Atmel:
http://www.reichelt.de/AT-AVR-ISP/3/index.html?&ACTION=3&LA=446&ARTICLE=45040&artnr=AT+AVR+ISP&SEARCH=avr+isp+mk

Zum flashen brauchst du dann nur in deiner Schaltung die ISP-Pins auf 
einen Stecker rausführen und kannst direkt in der Zielschaltung flashen.
Gast #3586500
Lesenswert?

Wugge D. schrieb:
> Hallöchen,
> ich bin hier neu im Forum
Herzlich Willkommen!

> Die Eingänge bekommen relativ schnelle Signale, sprich z.B. einen 10ms
> Impuls
Bei 10ms langweilt sich selbst der kleinste ATTinty

> sollte nicht so langsam
> sein das es zu Interrupts kommt
Interrupts müssen gerade bei Mikrocontrollern nicht unbedingt was 
schlechtes sein ;)

> -Welchen, möglichst kleinen (Bauform, Platzmangel im Anwendungsgebiet)
> Mikrocontroller könnt ihr mir da empfehlen?
Wie schon gesagt ist ein ATTiny ( oder ein vergleichbarer PIC, kenne 
mich da nicht aus ) schon ausreichend. Je nach Platzproblemen kann man 
die SMD Varianten nehmen.
3 GPIOs haben sie eigentlich immer ( Vorsicht ist trotzdem besser als 
Nachsicht ):
http://www.atmel.com/products/microcontrollers/avr/tinyavr.aspx

> -Kann mir jemand so einen Mikroprozessor flashen? Ich wollte mir nicht
> für einen einzigen ein ISP Board (???) anschaffen...
Dir muss aber auch bewusst sein, dass du dann auch keine Änderungen mehr 
vornehmen kannst und das Programm von anfang an richtig sein muss ( 
schwerer als gedacht ).
Sollte es wirklich nur bei diesem einen Controller bleiben, kann mans 
noch verstehen, aber wenn du in dem Bereich später vielleicht doch noch 
was machen willst, ist ein ISP-Adapter die bessere Wahl.
Gast #3586590
Lesenswert?

Wugge D. schrieb:
> Hallöchen,
> ich bin hier neu im Forum und suche Rat bei den "großen".

Wenn dir 1,76 m reicht. ;-)

> Die Eingänge bekommen relativ schnelle Signale, sprich z.B. einen 10ms
> Impuls, also der verarbeitende Mikrocontroller sollte nicht so langsam
> sein das es zu Interrupts kommt.

Wie hier schon geschrieben wurde: das ist sehr langsam für einen 
Mikrocontroller.

> -Welchen, möglichst kleinen (Bauform, Platzmangel im Anwendungsgebiet)
> Mikrocontroller könnt ihr mir da empfehlen?

Der kleinste passende von den verbreiteten Mikrocontrollern, den ich 
kenne, ist der ATtiny10 (SOT-23-Gehäuse!). Gibt es schon für 50 Cent, 
zum Beispiel da:

https://guloshop.de/shop/Mikrocontroller/ATtiny10::84.html

> -Kann mir jemand so einen Mikroprozessor flashen? Ich wollte mir nicht
> für einen einzigen ein ISP Board (???) anschaffen...

Kann jeder, der einen USBasp zu Hause hat. Mit dem Mk II müsste es auch 
gehen, mit manchen anderen geht es nicht, weil sie das 
Programmier-Verfahren TPI nicht können (z.B. MyAVR Light).
USBasp kannst du aus China bestellen, für um die 3 Euro. Oder du nimmst 
den da: 
https://guloshop.de/shop/Mikrocontroller-Programmierung/guloprog-der-Programmer-von-guloshop-de::70.html

Viel spaß bei dem Projekt!
Gast #3586862
Lesenswert?

Eine Möglichkeit wäre mit einem digispark (ATtiny85 mit Arduino IDE). 
Kann direkt an den USB angschlossen werden für die Programmmierung und 
braucht somit kein Programmer.

Der ATtiny85 verträgt 5V. Auf dem Digispark hat es einen 
Spannungsregler, da kann die Spannung 7-35V betragen.

Vielleicht sagst du wie die Eingangssignale aussehen und was geschalten 
werden soll. Dann kann man mehr sagen.

http://digistump.com/products/1
Ein Beispiel:
http://www.cboden.de/mikro-controller/digispark/ampel-steuerung
Persönliche Seite #3586870
Lesenswert?

Wugge D. schrieb:
> Ich wollte mir nicht
> für einen einzigen ein ISP Board (???) anschaffen...

Dann ist ein MSP430 LaunchPad zu empfehlen.

"Nur programmieren", wie z.B. mit einem USBasp ermöglicht Dir nicht, im 
Einzelschritt durch dein Programm zu steppen, Breakpoints zu setzen oder 
Variablen-Inhalte auszulesen.

AVR geht auch, aber ein AVR Dragon ist deutlich teurer.

Und jetzt bitte kein Glaubenskrieg! Ob der TO das braucht oder nicht, 
muss er selbst entscheiden.
#3586881
Lesenswert?

Nachtrag:
Für nur wenig € mehr (0.43€ bei TME) gibt’s den schnelleren PIC10(L)F320 
mit mehr Peripherie und einer Configurable Logic Cell die die gewünschte 
Funktion vllt. in Hardware ausführen könnte.

Operating Voltage Range:
- 1.8V to 3.6V (PIC10LF320)
- 2.3V to 5.5V (PIC10F320)

Operating Current (PIC10LF320):
-25µA @ 1 MHz, 1.8V, typical
Gast #3586898
Lesenswert?

Max H. schrieb:
> Wugge D. schrieb:
>> der gennante ATTiny
> Welcher? Wenn ich mich nicht verzählt habe, wurden 4 genannt.

Ich nehme an, er meint den ATtiny10, welcher wohl auch von all den 
verfügbaren ATtinys für die geplante Aufgabe am besten geeignet ist.

Wugge D. schrieb:
> Und wie schauts aus, wie
> viel Saft zieht der gennante ATTiny, speziell, wie viel Volt mag er
> damit er funktioniert?

Betriebsspannung: 1,8 bis 5,5 Volt
Strom (aktiv): je nach Takt 25 µA bis 4 mA

Da für deine Aufgabe der langsamste Takt sicher ausreicht, kannst du mit 
25 µA kalkulieren.

Noch etwas: im Sleep-Mode braucht ATtiny10 weniger als 1 µA!
Da dieser Mikrocontroller über PIN-Change-Interrupts verfügt, kannst du 
ihn praktisch dauernd schlafen lassen und nur bei einem Wechsel des 
Eingangssignals kurz aufwecken. Stromverbrauch sollte also kein Problem 
sein. :-)
#3586929
Lesenswert?

Wenn sich die gewünschte Funktion mit der CLC (Configurable Logic Cell) 
des PIC10(L)F320 implementieren lässt, könnte man den PIC die ganze Zeit 
schlafen lassen, da die CLC auch im Sleep funktioniert.
Zitat Datenblatt:
>The selection, gating, and logic functions are not
>affected by Sleep
Im Sleep brauch der PIC10LF typical 20nA @ 1.8V .
#3586944
Lesenswert?

Wugge D. schrieb:
> -Welchen, möglichst kleinen (Bauform, Platzmangel im Anwendungsgebiet)
> Mikrocontroller könnt ihr mir da empfehlen?
>
> -Kann mir jemand so einen Mikroprozessor flashen? Ich wollte mir nicht
> für einen einzigen ein ISP Board (???) anschaffen...

klein genug? , hat 1 Eingang & 2 Ausgaenge
koennte auch 2 Eingaenge & 1 Ausgang haben

vlG
Charly
Angehängte Dateien:
Gast #3586962
Lesenswert?

Max H. schrieb:
> Charly B. schrieb:
>> klein genug?
> Welches Gehäuse hat der Chip? Ich vermute SOT23-6, bin mir aber nicht
> sicher.

Das ist ein ATtiny9. Der hat das gleiche Gehäuse wie der ATtiny10, 
SOT-23: 
https://guloshop.de/shop/images/product_images/popup_images/84_0.jpg

Ist dem ATtiny10 sehr ähnlich, hat zwar keinen AD-Wandler, aber 
ebenfalls 1 KB Programmspeicher.
#3586974
Lesenswert?

Weil jetzt schon öfter die ganz kleinen ATtinys empfohlen wurden: Bei 
den ATtiny4/5/9/10 ist die Programmierung in C aufgrund des sehr kleinen 
SRAMs etwas problematisch. Einfach mal im Forum zu diesem Thema suchen, 
evtl. ist das Vorhaben auf den SOT6-Tinys dann nur in Assembler 
vernünftig zu realisieren.

Oder einfach einen etwas größeren Tiny im SO-Gehäuse nehmen, der sich 
auch vernünftig in C programmieren lässt. Einige wurden ja hier schon 
genannt.

Den Einsatz eines MSP430 oder einem noch leistungsfähigerem uC für so 
eine Mini-Aufgabe halte ich für "mit Kanonen auf Spatzen geschossen". 
Die nötige Einarbeitungszeit übersteigt hier den Einsatzzweck.
#3586996
Lesenswert?

UI. Erstmal danke, hier gibts ja massig Resonanz, das ist super.
Ich hab hier jetzt so einiges gelesen, und wenig verstanden :D
Es gibt also wohl nicht nur "DIE ATmels", sondern auch andere, 
günstigere (???) Alternativen?

Also, vom Prinzip her glaub ich macht es Sinn wenn ich mal den 
Einsatzzweck näher beschreibe. Das ganze kommt an ein 
Batteriebetriebenes Endgerät, das einen E Motor und ein Zahnradwerk 
besitzt.
Es gibt drei Eingänge: S, T und C (alles Tastschalter)
und einen Ausgang: M

Wenn S aus ist und T ein Signal bekommt M auch eins. Wenn aus diesem 
Zustand T losgelassen wird bekommt M solange weiterhin ein Signal, bis 
bei C einmal ein Signal ankam

Wenn S an ist und T ein Signal bekommt, dann wird M angeschaltet bis C 
einen Impuls kriegt. Ab dahin passiert nichts, bis T einmal kein Signal 
bekommt.

Und dass war es auch schon zum Thema Anwendung. Ich habe mich noch mal 
ein Stück in die ATmegas eingearbeitet, und deren Handhabung in C 
gestaltet sich wohl doch ein kleines Stückchen schwerer als gedacht, 
aber das ist meine Sorge.

Wenn ich einen Prozessor meinen Wünschen entsprechend flashen will, muss 
ich also ein Board haben was über USB an meinen Rechner geht (COM hab 
ich net mehr), und auf meinem Rechner die richtige Software zum Flashen?
Wenn dann suche ich eine Lösung wo ich keine extra Stromversorgung fürs 
Board brauche...

Wie würdet ihr den Prozessor mit Saft versorgen wenn die eigentliche 
Stromquelle variabel irgendwo zwischen 7-14 VOLT DC liegt?


EDIT: Nach Möglichkeit so wenig Bauteile wie es geht für den Prozessor 
(z.B: keine externer Quarz)
#3587008
Lesenswert?

Wugge D. schrieb:
> Es gibt drei Eingänge: S, T und C (alles Tastschalter)
Wo kommen dann die 10ms her?

Wugge D. schrieb:
> Wenn dann suche ich eine Lösung wo ich keine extra Stromversorgung fürs
> Board brauche...
Das PICkit3 kann den µC beim Programmieren mit Strom versorgen (ca. 1.8V 
bis 5V einstellbar).

Wugge D. schrieb:
> Wie würdet ihr den Prozessor mit Saft versorgen wenn die eigentliche
> Stromquelle variabel irgendwo zwischen 7-14 VOLT DC liegt?
Mit einem Festspannungsregler wie z.B. dem MCP1703. Der verbrauch nur 
2µA.
#3587020
Lesenswert?

Wugge D. schrieb:
> EDIT: Nach Möglichkeit so wenig Bauteile wie es geht für den Prozessor
> (z.B: keine externer Quarz)
Der PIC10F320 hat einen internen 16MHz Oszillator und Interruptfähige 
IOs (einer Input only).
Der MCP1703 brauch als Beschaltung 2x 1µF Keramik, und der PIC10F320 nur 
einen 100nF Keramik. Pullups für die Tasten sind im µC integriert. Dazu 
kommen dann noch die 3 Tasten und der Mosfet + Gatewiderstand. Macht 
gesamt 10 Bauteile inkl. Tasten und Mosfet.
Wenn der FET keine großen Ströme schalten muss, ist keines der Bauteile 
(außer den Tasten) größer als 3.1*3.2mm (inkl. Füßchen).

Als N-FET kann ich den IRLML6244TR (SOT-23) empfehlen:
Rds(on) 21mΩ @ Vgs=4.5V
Rds(on) 27mΩ @ Vgs=2.5V
Persönliche Seite #3587089
Lesenswert?

Markus R. schrieb:
> Den Einsatz eines MSP430 oder einem noch leistungsfähigerem uC für so
> eine Mini-Aufgabe halte ich für "mit Kanonen auf Spatzen geschossen".
> Die nötige Einarbeitungszeit übersteigt hier den Einsatzzweck.

OK, hier eine Gegenmeinung: "Zuviel" Leistungsfähigkeit stört nicht und 
256B RAM sind ja auch nicht gerade leistungsfähig. Vorteil: 
In-System-Debugging für unter 10€ und 14- oder 20-Pin DIP-Gehäuse, also 
kein SMD.

Da die beim MSP430 LaunchPad mitgelieferten Beispiele "out of the 
box" laufen und nur leicht verändert werden müssen, ist keine 
nennenswerte  "Einarbeitungszeit" erkennbar.

Noch preiswerter wäre ein Infineon XMC 2Go. Wenn da jemand sagt 
"mit Kanonen auf Spatzen geschossen", würde ich das verstehen.
Gast #3587124
Lesenswert?

Max H. schrieb:
> Meiner Meinung mach sollte es möglich sein PIC10 + Spannungsregler +
> Mosfet + Außenbeschaltung auf einer Platine die <= groß ist wie das
> "Infineon XMC 2Go" unterzubringen.

Locker! :-) Auch, wenn ich aus der AVR-Welt komme, hier bin ich mal ganz 
bei dir. Der kleine PIC10 ist für diesen Einsatzzweck genauso gut 
geeignet wie der ATtiny10 (oder ATtiny4, denn 512 Bytes Programmspeicher 
reichen natürlich aus).

In beiden Fällen reichen 5 oder 10 Euro für den Einstieg (Programmer und 
Mikrocontroller). Eine Testumgebung mit Evaluations-Board und Debugger 
braucht bei einer so einfachen Anwendung kein Mensch.
#3587410
Lesenswert?

Soweit schonmal vielen Dank.
Den entsprechenden N Channel Mosfet plus eine Schaltung mit einem P 
Channel als Aktive Motorbremse gibt es alles schon. Ich hätte dann noch 
eine Frage zum Programmieren:

Wie spreche ich möglichst Direkt die IOs von einem uController (k.p. wie 
das mikro u geht :D) an? AFAIK sind kann ich mit Zeigern auf 
Variablenbezeichner á la r1, r13 usw. verweisen, und die dann mit 
(mangels boolean) integer werten 0 oder 1 auf high oder low schalten, 
bzw. ihren aktuellen Pegel abrufen?
Gast #3587592
Lesenswert?

Hi

Nur mal so zum Verständnis eine kleine Skizze:
Bei 10 msek. dürfte dann eine Drehzahl  von 6000 U/min erreicht werden. 
Nun die klassische Antwort: bei 10 mSek. langweilt sich ein 
Controller...
Ja, das schon, aber der Impuls wird deutlich kürzer sein, wenn er dem 
SChema entspricht. Ein Nocken kann durchaus nur 5% vom Umfang schalten 
und dann sind wir bei 0,5 mSek. Ist zwar immer noch eine lange Zeit, 
aber es kommt nun auf die Zykluszeit des Programms an.

>Die Eingänge bekommen relativ schnelle Signale, sprich z.B. einen 10ms
>Impuls, also der verarbeitende Mikrocontroller sollte nicht so langsam
>sein das es zu Interrupts kommt.
 Nun, ein Interrupt kommmt nicht von allein, er muss programmiert werden 
und wenn die Skizze der Wahrheit nahe kommt ist es schon sinnvoll, den 
Impuls über Interrrupt zu erfassen.

>Ursprünglich habe ich das ganze mal als Logikgatter Schaltung entworfen,
>aber einen gravierenden Fehler gemacht weshalb mein Entwurf wertlos ist.

Und genau aus diesem Grund setzt man µC ein. So kann eine falsche 
Programmierung korrigiert werden, ohne eine SChaltung in die Tonne zu 
schmeißen. Allerdings muss man das dann programmieren können und wollen. 
Fremd vergeben kann da schon richtig teuer werden, wenn im Entwurf 
Denkfehler sind.

>Wenn S an ist und T ein Signal bekommt, dann wird M angeschaltet bis C
>einen Impuls kriegt. Ab dahin passiert nichts, bis T einmal kein Signal
>bekommt.

Deine Beschreibung ist nur teilweise zu gebrauchen, denn dieser Satz 
isth ein wenig irritierend. Der Motor wird eingeschaltet, bis C einen 
Impúls bekommt, ab dann passiert nichts ?  Das läßt schon verschiedene 
Auslegungen zu.
Gruß oldmax
Angehängte Dateien:
Gast #3587594
Lesenswert?

Wugge D. schrieb:
> Wie spreche ich möglichst Direkt die IOs von einem uController (k.p. wie
> das mikro u geht :D) an? AFAIK sind kann ich mit Zeigern auf
> Variablenbezeichner á la r1, r13 usw. verweisen, und die dann mit
> (mangels boolean) integer werten 0 oder 1 auf high oder low schalten,
> bzw. ihren aktuellen Pegel abrufen?

µ gibt man ein mit AltGr-M - jedenfalls bei den üblichen Tastaturen.

Wie die Signalzustände der Pins abgefragt werden, steht meistens im 
Datenblatt - je nachdem, welchen Mikrocontroller du verwenden willst.

Sehr gute Tutorials findest du auch hier in der Community. Zum Beispiel 
dieses: AVR-Tutorial: IO-Grundlagen

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren