Search the Community
Showing results for tags 'microprozessor'.
-
Hallo zusammen, mit diesem Beitrag will ich einfach mal meine Bemühungen zum Thema 27-40MHz für moderne Fernsteuerungen wie EdgeTx, OpenTx, Hott, FrSky, FlySky, ... zusammen stellen. Die erste Frage ist natürlich: was soll das? Der erste Beitrag zu diesem Thema war: https://www.schiffsmodell.net/index.php?/forums/topic/18147-40-mhz-mit-einem-modernen-opentx-sender-geht/ Die Motivation war hier: 1) alte Technik in bestehenden Modellen weiter nutzen zu können, und 2) etwas für die U-Boot-Fahrer zu tun. In einem Satz zusammengefasst: wie kann man moderne Fernsteuerungen und alte Übertragungstechnik zusammenführen und elegant nutzbar machen. Mein Anlass für diesen Beitrag ist jetzt, dass ich von vielen darauf angesprochen werde, ich aber eigentlich kein Modellbau mehr mache, und nun darauf hoffe, dass es jetzt hier auch einige Elektronik-affine Menschen gibt, denen ich das Wissen bei Interesse weitergeben kann. Denn für mich ist das Thema (fast) abgeschlossen - leider. Ich habe verschiedene Wege beschritten: 1) Anpassung von alten (analogen) JR-Sendemodulen (FM) auf moderne Sender mit JR-Modulschacht wie etwa ein RadioMaster TX16s oder FrSky X12s, etc. 2) Entwicklung eines neuen (digitalen) FM-Sendmoduls im JR-Format. 3) Entwicklung einer Relais-Station für FM. 4) Entwicklung einer Relais-Station mit Telemetrie zum Modell und eines Telemetrie-Empfängers Bevor ich auf die Realisierungen bei Interesse eingehe, will ich die Vor-/Nachteile der Wege 1-4 kurz beschreiben. Pro/Con 1): + (weitestgehend) legal + kompatibel zu alten Quarz- und Scan-FM-Empfängern - keine Telemetrie zum Modell - lange Antenne am Sender - Quarze müssen gewechselt werden - keine Sicherheit gegen Kanal-Doppelbelegung - nur Sender mit JR-Modulschacht Pro/Con 2): + keine Quarze, Kanalauswahl am Sender + kompatibel zu alten Quarz- und Scan-FM-Empfängern - illegal - keine Telemetrie zum Modell - lange Antenne am Sender - keine Sicherheit gegen Kanal-Doppelbelegung - nur Sender mit JR-Modulschacht - nur MPM-fähige Sender Pro/Con 3): + keine Quarze + Kanalauswahl am Sender + kompatibel zu alten Quarz- und Scan-FM-Empfängern + beliebiger Sender mit kurzer Antenne (2,4GHz, ELRS, ...) + beste Reichweite (optimale Antenne) - illegal - keine Telemetrie zum Modell - keine Sicherheit gegen Kanal-Doppelbelegung Pro/Con 4): + keine Quarze, keine Kanalwahl notwendig + beliebiger Sender mit kurzer Antenne (2,4GHz, ELRS, ...) + enorme Reichweite + Telemtrie zum Modell + CSMA -> keine Kanal-Doppelbelegung - illegal - inkompatibel zu FM-Empfänger - eigener Empfängr notwendig - Chip-Auswahl (s.u.) Man kann das auch noch etwas anders beschreiben: zu 1-3) Der Vorteil, die alten FM Quarz- oder Scan-Empfänger verwenden zu können, ist natürlich auch ein Nachteil, weil die eben nur antiquarisch zu bekommen sind bzw. die Corona-Scan-Empfänger nur auf Auftrag in größeren Stückzahlen hergestellt werden. zu 1) alte Sendemodule werden gehandelt wir Goldstaub. Der Umbau ist zwar einfach möglich, dazu habe ich auch eine Anleitung gemacht. Jedoch ist diese lange Antenne am JR-Modulgehäuse eine Zumutung. zu 2) Auch hier bleibt es ein Modul mit lange Antenne. Zudem ist Selbstbau erforderlich und ist damit formell illegal, auch wenn das Modul HF-technisch um Klassen besser ist als die alten analogen JR-Module, dürfte das einen Rechtsanwalt nicht interessieren. zu 3) Ist ein coole Lösung, gerade auch für U-Boot-Fahrer. Man kann die Relais-Station mit der langen Antenne oder sogar mit einer Ground-Plane-Antenne optimal und sogar im See positionieren. Wer sich um die Legalität nicht kümmert, kann die Relais-Station auch mit mehr als 100mW betreiben ;-) zu 4) Dies ist eigentlich das beste von allem: Telemetrie zum Modell und niedriger Frequenzbereich (bis runter zu 27MHz). Leider ist die Chip-Familie von OnSemi zum Ende 2022 eingestellt worden ohne einen geeigneten Ersatz. Falls das jemand interessiert, bitte einfach hier fragen. Bilder, etc. kann ich gerne hier einstellen. Andernfalls lassen wir das einfach im Orkus der Geschichte verschwinden. P.S.: Ich hatte in meinem YT Channel auch mal eine 40MHz-Mini-Serie gemacht. Hier der erste Teil: https://www.youtube.com/watch?v=Ts7rE-eQF9k
- 18 replies
-
- 1
-
- empfänger
- fernsteuerung
-
(and 1 more)
Tagged with:
-
Oh man, dort hatte ich mal mit dem Projekt angefangen, und das ist schon 9 Monate her. Höchste Zeit mal wieder was dazu zu schreiben. Ich habe ein neues Thema dafür auf gemacht, weil sich doch ein paar Dinge geändert haben, aber das Projekt dafür jetzt auch rund läuft. Fangen wir nochmal vorne an, was ist das Ziel? Da die Taranis X9E nicht über Multiswitch-Möglichkeiten verfügt, wie das z.B. mit dem Modulen von IMTH für Graupner möglich ist, habe ich nach einem Weg gesucht möglichst viele "Funktionen" vom Sender zum Empfänger zu übertragen, ohne mir aber die 32 möglichen PPM Kanäle zuzubauen. Diese ganzen Funktionen sollen irgendwann auf meinem Rettungskreuzer Eiswette die Beleuchtung, das Radar, und die Scheibenwischer schalten. Scheibenwischer? Bist du komplett wahnsinnig? Shush...immer diese Stimmen aus dem Off, die stören wollen: JA SCHEIBENWISCHER! Es gibt schöne kleine Microservos und Linearservos, groß, wie eine Briefmarke, warum nicht versuchen die 5 Dinger auch irgendwie unterzubringen. Genug Schaltkanäle sollten sich finden lassen. Damit die Stimmen noch mehr zu diskutieren haben, möchte ich das Ganze dual steuern können. Nur über den Sender ist langweilig, warum also nicht über ein Smartphone steuern können, wenn die in der Vitrine geparkt ist und einfach nur schön aussehen soll? Die Beleuchtung soll zudem noch halbwegs vernünftig sein, und einem nicht beim Einschalten hell wie die Sonne entgegen leuchten. Also müssen die LED irgendwie individuell gedimmt werden. Was braucht man für diese Anforderungen? Fangen wir an den Ausgängen an: gedimmte LED, das schreit nach einer PWM Steuerung. Adafruit (und auch andere als Kopie davon) bieten eine Platine auf Basis des PCA9685 PWM Treiberbausteins an. https://www.adafruit.com/product/815 Das Modul hat 16 Kanäle, jeder kann unabhängig eingestellt und angesprochen werden. Die Ausgangsspannung ist 3,3V und der Strom wird pro Kanal automatisch auf 10mA begrenzt. Für LED sind diese Eckdaten völlig ausreichend. Außerdem kann man Servos anschließen und ansteuern. Das Modul arbeitet schließlich mit PWM, was nichts anderes ist, als das Signal, was der Empfänger für Servos generiert. Man muss nur ein wenig nachdenken oder ausprobieren, dass man die übliche Einschaltdauer für Servos hin bekommt. Da die Servos etwas mehr Strom als die LED brauchen, gibt es einen separaten Kontakt zur Stromversorgung auf den Platinen. Dazu später mehr. Insgesamt bin ich bei der Eiswette mit allen LED für die Navigationsbeleuchtung, Deck- und Arbeitsscheinwerfer, Suchscheinwerfer, 6 LED für das Blaulicht und die Servos auf 39 Ausgänge gekommen. Es werden also drei von den PWM Modulen benötigt. Der Motor des Radars hat mir zusammen mit den PWM Modulen einen üblen Scherz gespielt. Die Anleitung für den PWM Treiber sagte aus, dass der Strom auf 25mA begrenzt ist. Das sollte für ein kleines Motörchen, wie dieses https://www.sol-expert-group.de/1zu87modellbau/Motor-und-Getriebe/Aufgebaute-Getriebe/Mikro-Planeten-Getriebe-G700::677.html locker reichen. An einer Mignon-Batterie als Test lief der schon in einer guten Drehzahl, also habe ich den Motor an das Modul angeschlossen. Mit voll aufgerissener PWM kam der Motor aber nicht annähernd an die Drehzahl, als mit einer Mignonzelle. Hmmm.....Batterie = 1,5V => gute Drehzahl, PWM 3,3V = Miese Drehzahl? Was soll denn der Quatsch? Ich hab alles auf den Kopf gestellt, bis ich mal über das Labornetzteil den Strom gemessen habe, den der Motor bei 1,5V zieht. Der Motorstrom war zu hoch. Die PWM Boards haben an den Ausgängen für jeweils 4 Kanäle einen 220 Ohm Widerstandsbaustein fest eingebaut. Damit war die Strombegrenzung auf 10mA runtergesetzt, und der Motor hatte zu wenig Dampf, um schnell genug zu drehen. Also was tun? Diese SMD Maikäfer auslöten und irgendwas dämliches probieren? Neee, nachher geht was anderes dadurch kaputt, dann ärgere ich mich. In der Sammelkiste hatte ich aber noch ein Relaismodul, was über ein Servosignal zu schalten ist. Also wird das genommen, davor eine regelbare Spannungsquelle gesetzt und gut ist.
- 6 replies
-
- beleuchtung
- elektronik
- (and 4 more)
-
Hallo. Für meine STABERHUK habe ich einen Soundplayer für ein Typhon gebaut. Diesen Soundplayer möchte ich hier für den Nachbau vorstellen. Die Beschreibung des Prototypen und weitere Informationen findet Ihr hier. Hardware Beschreibung meines WAV-Player mit PIC18F4685 Der WAV Player spielt die Sounds von drei verschiedenen Typhons ab. Die Sounds sind im Flash Speicher des PIC Controllers als WAV-Datei mit 8 bit Mono 16kHz abgelegt und werden auf Knopfdruck wiedergegeben. Zum Abspielen über einen Lautsrecher ist ein Verstärker erforderlich. Die Lautstärke kann über einen Trimmer eingestellt werden. Die Sounds sind fest im Programm eingebunden und können nicht ohne weiteres verändert werden. Eine Kontroll-Led leuchtet während der Soundwiedergabe und kann bei Bedarf über einen Jumper abgeschaltet werden. Anschlüsse: 1. Stromversorgung: Der Player enthält einen 100mA Spannungsregler welcher den Controller mit 5 V versorgt. Er kann daher mit 5 V oder mit 12 V (8 - 16V) betrieben werden. Klemmen hierfür: +12 V oder +5 V und GND (Masse). 2. Audioausgang: Der Verstärker wird an den Audioausgang angeschlossen. Klemmen hierfür: Audio und GND. 3. Soundwiedergabe: Auf der Platine des WAV-Players befindet sich eine Taste. Diese ist parallel zum Eingang SND 1 geschaltet. Wird diese Taste gedrückt, oder der Eingang SND1 auf +5 V gelegt, so wird der Sound abgespielt. 4. Reserveeingänge: Die Eingänge SND2 bis SND5 sind Reserveeingänge des WAV Players für evtl. andere Sounds und werden beim Typhon nicht gebraucht. 5. Programmieranschluss: Neben dem PIC Controller befindet sich ein 5 poliger Pfostenstecker. Dies ist der Programmieranschluss für den PIC Kontroller. Hier kann ein neues oder geändertes Programm in den Kontroller geflasht werden. Soundauswahl über Jumper: Über drei Jumper können die Sounds und das Verhalten ausgewählt werden. Je nach Jumperstellung kann jeder Sound entweder einfach oder als Endlosschleife, solange die Taste gedrückt bleibt, abgespielt werden. Folgende Sounds sind abspielbar: Jumper 1 gesteckt: Leslie125 8bit mono 16kHz Einfach Jumper 1 und 2 gesteckt: Leslie125 8bit mono 16kHz Schleife Jumper 2 gesteckt: Kahlenberg 8bit mono 16kHz Einfach Jumper 2 und 3 gesteckt: Kahlenberg 8bit mono 16kHz Schleife Jumper 3 gesteckt: Nathan44 8bit mono 16kHz Einfach Jumper 1 und 3 gesteckt: Nathan44 8bit mono 16kHz Schleife Dateien: Folgende Dateien sind in diesem Projekt enthalten: - Schaltplan --> Schaltplan als Handzeichnung - Bestückungsplan --> Bestückungsplan der Platine - Platinenlayout --> TIF Datei des Layouts - Eagle-File --> Platinenlayout für EAGLE-CAD - Stückliste --> Stückliste für den WAV Player - C-Programm --> C-Quellcode des WAV Players - HEX-File --> fertig compilierte Datei die direkt in den PIC gebrannt werden kann - Include - Init --> Initialisierungsdatei für den PIC Kontroller - Include - Konfig --> Konfigurationsdatei für den PIC Kontroller - Soundfiles --> Sounds im h-Format zur Einbindung in das C-Programm - Beschreibung.txt --> Diese Datei Hier der Prototyp auf einem Steckbrett Unter dem Mikrocontroller befinden sich weitere Bauteile und ein paar Brücken Der fertige Soundplayer. Durch die Software wird er zum Typhon Platine des Soundplayers von Unten Ein kleines Filmchen erklärt nochmal den Anschluss und einige Funktionen Jeder Nachbau geschieht auf eigene Gefahr. Für Schäden die durch einen Nachbau entstehen übernehme ich keine Haftung. Jeder der dieses Typhon nachbauen möchte kann diese Dateien für den privaten Gebrauch verwenden. Eine komerzielle Nutzung ist verboten. Ich wünsche viel Spass beim Nachbau und bin gespannt auf eure Komentare. Viele Grüße aus dem Ruhrgebiet Manfred Von Moderator Antias bearbeitet Youtube Link wiederhergestellt. Typhon.zip
- 1 reply
-
- ätzen
- baubericht
-
(and 5 more)
Tagged with:
-
Ich suche den Sound des Thyfons eines Polizeibootes oder Ähnliches
derManfred posted a topic in Soundeffekte
Hallo Ich möchte für meine STABERHUK einen Soundgenerator für das Thyphon bauen. Dazu benötige ich einen Originalsound. Leider kann ich im WEB nichts passendes finden. Ich weis auch nicht wie sich das Thyphon der STABERHUK, oder das von ähnlichen Schiffen wie z.B. Zoll- oder anderen Polizeibooten anhört. Ein Martinshorn oder eine Sirene haben ja solche Boote nicht, oder? Wer kann da mit einem Link (z.B. zu Youtube) helfen? Mit freundlichen Grüßen Manfred- 15 replies
-
- behördenschiffe
- küstenwache
- (and 4 more)
-
Wie kann ich ein Elektronikprojekt hier posten?
derManfred posted a topic in Schaltungen und Bauelemente
Hallo Ich würde gern einige eigene Elektronikschaltungen für den Schiffsmodellbau hier posten. Aber; ein Elektronikprojekt z.B. mit einem Mikrocontroller besteht aus mehreren Dateien. - Schaltplan - Schaltungsbeschreibung - Platinenlayout - Stückliste - Bestückungsplan - Software im Quellcode - Software als Hex-Datei - etc... Wie kann ich solch ein Projekt hier posten? Eine ZIP-Datei, die alle oben genannten Dateien enthält, wäre am besten, geht aber wahrscheinlich nicht!? Ich habe jedenfalls noch keine Möglichkeit dafür gefunden. Wer weis Rat? Mit freundliche Grüßen Manfred- 4 replies
-
- ätzen
- elektronik
-
(and 2 more)
Tagged with:
-
3 downloads
Es wird der ESC Kanal vom Empfänger ausgewertet. Bei Vorwärtsfahrt wird der Servo an einen Anschlag gefahren, bei Rückwärtsfahrt wird der Servo automatisch an den anderen Anschlag gefahren und das Motorensignal als Vorwärtssignal ausgegeben. Dazu sind noch folgende Features wichtig: Der Servokanal muss reversible sein, und man muss den Weg einstellen können, am besten man kann die beiden Position direkt per Fernbedienung programmieren. Auch der Motorkanal sollte einstellbar sein, damit man z.B. auch günstigere Flugregler verwenden kann. Der Empfänger wird vom Pin 2 gelesen, die Ausgänge liegen auf Pin 9 (Klappenservo) und 10 (ESC). Am Anschluss 5 wird ein Taster (PRG) gegen Masse angeschlossen. Im Programm gibt es einen Programmiermodus, wenn der Taster PRG beim Einschalten gedrückt wird. Dann können die beiden Positionen des Klappenservos und die minimale und maximale Ansteuerung des ESC's gespeichert werden. Zunächst muss die obere Position gespeichert werden, dazu die Steuerung auf den gewünschten Wert einstellen und PRG drücken. Zur Quittierung blinkt die Board-LED. Danach wird die untere Position angefahren und genauso gespeichert. Jetzt die maximale Stellung des ESC, und danach die Minimalposition. Der Programmiermodus wird dann automatisch verlassen. Die Werte für die Klappe und den ESC werden im EEPROM abgelegt und beim erneuten Start auch wieder gelesen. Die minimale Position steht im EEPROM in der Adresse 0, die maximale Position an Adresse 1. (Es ist dabei völlig egal, welchen Wert die untere bzw. obere Position tatsächlich haben. Unten definiert nur den Rückwärtsbetrieb. Wie der Servo dabei stehen muss, ist völlig egal. Es wird beim Speichern einfach die programmierte Position angefahren. Das gleiche gilt auch für die andere Position.) Adresse 3 enthält den ESC Max Wert und 2 den ESC Min Wert. Weiterhin kann im Programm auch der ESC bei Rückwärtsfahrt auf halbe Leistung geschaltet werden. Dazu dient der Compilerschalter HALF_BACK_THROTTLE. Ich hab das ganze auf einer Lochrasterplatine mit Mega328 aufgebaut. Das Programm kann aber auch auf einem Tiny85 laufen. Zum Beitrag im Forum-
- microprozessor
- rc komponenten
-
(and 2 more)
Tagged with:
-
Bei meinem kleines Jetboot (NQD Tear Into) mußte ich den Antrieb tauschen. Ich hab dann gleich die Chanche genutzt und einen Jet mit Rückfahrklappe (Graupner Minijet) montiert. Denn Rückwärts fahren kann das Boot so nicht. Und selbst mit Rückfahrklappe ist das nicht ganz einfach. Denn die Klappe wird extra gesteuert und man muss den Antrieb weiter vorwärtslaufen lassen. Dazu ist aber eine 3-Kanal Funke notwendig. Nun ist aber, m.M. nach, eine Pistolensteuerung ideal für das Gefährt. Die hat aber nur 2 Kanäle… So ein Dilemma, man müßte also die Klappe zusammen mit dem Motor steuern können. Das genau macht dieses Programm. Es wird der ESC Kanal vom Empfänger ausgewertet. Bei Vorwärtsfahrt wird der Servo an einen Anschlag gefahren, bei Rückwärtsfahrt wird der Servo automatisch an den anderen Anschlag gefahren und das Motorensignal als Vorwärtssignal ausgegeben. Dazu sind noch folgende Features wichtig: Der Servokanal muss reversible sein, und man muss den Weg einstellen können, am besten man kann die beiden Position direkt per Fernbedienung programmieren. Auch der Motorkanal sollte einstellbar sein, damit man z.B. auch günstigere Flugregler verwenden kann. Der Empfänger wird vom Pin 2 gelesen, die Ausgänge liegen auf Pin 9 (Klappenservo) und 10 (ESC). Am Anschluss 5 wird ein Taster (PRG) gegen Masse angeschlossen. Im Programm gibt es einen Programmiermodus, wenn der Taster PRG beim Einschalten gedrückt wird. Dann können die beiden Positionen des Klappenservos und die minimale und maximale Ansteuerung des ESC's gespeichert werden. Zunächst muss die obere Position gespeichert werden, dazu die Steuerung auf den gewünschten Wert einstellen und PRG drücken. Zur Quittierung blinkt die Board-LED. Danach wird die untere Position angefahren und genauso gespeichert. Jetzt die maximale Stellung des ESC, und danach die Minimalposition. Der Programmiermodus wird dann automatisch verlassen. Die Werte für die Klappe und den ESC werden im EEPROM abgelegt und beim erneuten Start auch wieder gelesen. Die minimale Position steht im EEPROM in der Adresse 0, die maximale Position an Adresse 1. (Es ist dabei völlig egal, welchen Wert die untere bzw. obere Position tatsächlich haben. Unten definiert nur den Rückwärtsbetrieb. Wie der Servo dabei stehen muss, ist völlig egal. Es wird beim Speichern einfach die programmierte Position angefahren. Das gleiche gilt auch für die andere Position.) Adresse 3 enthält den ESC Max Wert und 2 den ESC Min Wert. Weiterhin kann im Programm auch der ESC bei Rückwärtsfahrt auf halbe Leistung geschaltet werden. Dazu dient der Compilerschalter HALF_BACK_THROTTLE. Ich hab das ganze auf einer Lochrasterplatine mit Mega328 aufgebaut. Das Programm kann aber auch auf einem Tiny85 laufen.
- 6 replies
-
- rc komponenten
- elektronik
-
(and 2 more)
Tagged with:
-
So, nachdem ich jetzt Arbeitstechnisch etwas mehr Ruhe habe, möchte ich endlich mal das Urprojekt (Das Projekt mit dem die ganze RC Arduino Geschichte anfing) vorstellen. Mein Sohn und ich haben für ihn eine Feuerwehr Dolly gebaut. Mit Pumpe und Blaulich natürlich. Für die Ansteuerung brauchte ich natürlich einen Schalter. Also den 1-Kanalschalter von Conrad bestellt. Der war aber leider schnell kaputt. Also was neues, oder was eigenes. Da ich mich damals gerade mit den Arduinos beschäftigt habe, war es logisch, das Projekt damit zu machen. Aber was genau sollte denn der Schalter tun. Ich hab einen Protortionalkanal frei. Also am besten beide Richtungen dafür nutzen. Nach oben tippen geht das Blaulicht an bzw. aus, nach unten halten startet die Pumpe. Daraus entstand die erste Version des Programms. Mittlerweile hat sich das Programm etwas weiter entwickelt. Es kann nämlcih auch noch blinken, brauch ich aber für das Boot nicht, da ich blaue BlinkLED's eingebaut habe. Im Paket ist alles enthalten was ihr so braucht. Einfach in euren Sketchbook Ordner extrahieren. Darin sind 3 Ordner enthalten. - Feuerwehr, mit dem eigentlichen Programm - libraries, die abhängigen Bibliotheken - hardware Ein Schmankerl ist noch dabei. Hardware beinhaltet zus. Cores für ATTiny Serie. Das PRogramm läuft nämlich auch auf einem ATTiny85. Ich hab dazu auch eine Platine entwickelt. Die wird mit einem ATTiny verwendet. DAnn braucht man nicht den teuren Arduino im Modell versenken. (Soviel erst mal zu dem Thema: "Mit Arduino kann man nur Arduinos programmieren...") Feuerwehr.zip
-
- microprozessor
- fernsteuerung
-
(and 2 more)
Tagged with:
-
Hallo, nachdem das Auslesen eines RC-Signals klappt, steht jetzt eine sinnvolle Anwendung an. Ich möchte die in meiner FX30 vorhandene Schaltkanal-Funktion auf der Empfängerseite auswerten. Es gibt zwar von robbe/Futaba den dazugehörigen Dekoder, aber da mir niemand sagen konnte, ob dieser auch mit dem 2,4 GHz-System von ACT funktioniert, mache ich das jetzt auf diese Art zu Fuß. Zunächst fange ich bei 40 MHz an; diese Systeme sind meines Wissens alle ähnlich aufgebaut: Nach einem oder zwei Synchonisationspulsen werden die Informationen für die in der Regel 8 Schalt- oder auch Proportionalfunktionen nacheinander übertragen. Ob das auch bei der FX30 so ist, soll das nachfolgende Programm zeigen. Bitte nicht wundern, dass es dann doch zwei Programme sind. Ich habe es einmal mit der schon erwähnten Funktion und ein anderes mal mit den Interrupts gelöst. Weil auf meinem kleinen (2*8 Zeichen) LC Display nicht genug Platz ist, gebe ich die Ergebnisse auf dem Terminal aus. Das hat dann auch noch den Vorteil, dass man diese Werte speichern und in anderen Programmen weiterverarbeiten kann. Hier die Lösung mit der Funktion: '----- Titel ------------------------------------------------------------------- ' Module.......: SchaltkanalStart.bas ' Purpose......: Reads pulses of a Rx channel controled by Tx switch function ' and displays measured values on Bascom's terminal emulation ' To store readings open terminal log file before reading ' Number of reads in constant LoopRead ' Author.......: Jürgen Laakmann ' Version......: 0.1 ' MCU..........: ATmega16 using Pollin evaluation board ' Started......: 17.12.2012 '------------------------------------------------------------------------------- '----- Change History ---------------------------------------------------------- ' dd.mm.yyyy: '------------------------------------------------------------------------------- '----- Function ---------------------------------------------------------------- ' Parameter..: PulseLength ' Return.....: Measured Tx signal pulse length '------------------------------------------------------------------------------- '----- Settings ---------------------------------------------------------------- $regfile = "m16DEF.Dat" $crystal = 1000000 $baud = 4800 $hwstack = 32 $swstack = 10 $framesize = 40 '----- Functions --------------------------------------------------------------- Declare Sub Getpulse(PulseLength As Word ) '----- Constants --------------------------------------------------------------- Const LoopRead = 20 'defines number of RC signal read cycles Const Timer0PreSet = 158 'gives interrupt after 65 ms with prescale=1024 '----- Variables --------------------------------------------------------------- Dim PulseLength As Word Dim PulseNumber(LoopRead) As Word 'stores readings of RC signal Dim PulseError As Byte 'stores errors, given by Timer0 Dim Count As Byte 'used as loop counter '----- Ansteuerung Pollin Evaluation Board ------------------------------------- Dim KeyPressed as Bit ddrd = &B11100000 'PinD5-7 output, PinD0-4 input ' portD = &B11111111 'PullUp PinD0-7 active Key1 Alias Pind.2 Key2 Alias Pind.3 Key3 Alias Pind.4 LED1 Alias Portd.5 LED2 Alias Portd.6 Buzzer Alias Portd.7 '------------------------------------------------------------------------------- '----- Initialization ---------------------------------------------------------- 'RS232-Communikation: I/O-Puffer Config Serialin = Buffered , Size = 20 Config Serialout = Buffered , Size = 20 'LCD configuration Config LCD = 16 * 1 Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.2 , Rs = Portb.0 Cls Config Pina.0 = Input 'used for RC signal Config Timer0 = Timer , Prescale = 1024 Config Timer1 = Timer , Prescale = 1 LED1 = 0 LED2 = 0 On Timer0 Mispulse For Count = 1 to LoopRead Step 1 PulseNumber(Count) = 0 Next Count PulseError = 0 '===== Program ================================================================= '----- Part 1 ------------------------------------------------------------------ ' Waits until Key1 is pressed Cls Upperline : Lcd "Ready?" Lowerline : Lcd "Press K1" Bitwait Key1 , Set Reset Key1 ' key bounces, re-sets key for next stop point Cls Upperline : Lcd "Running" '----- Part 2 ------------------------------------------------------------------ Enable Timer0 Enable Timer1 Enable Interrupts Timer0 = Timer0PreSet Do For Count = 1 to LoopRead Step 1 Call GetPulse(PulseLength) PulseNumber(Count) = PulseLength Next Count Cls Upperline : Lcd "Done" Lowerline : Lcd "Press K1" Bitwait Key1 , Set Reset Key1 Upperline : Lcd "See term" Lowerline : Lcd "inal " Waitms 500 Print "Gemessene Pulslängen" For Count = 1 to LoopRead Step 1 If Count < 10 Then Print " " ; Count ; ";"; Else Print Count ; ";" ; End If Print PulseNumber(Count) Next Count Upperline : Lcd "New run?" Lowerline : Lcd "Press K1" Bitwait Key1 , set Cls Reset Key1 Upperline : Lcd "Running" Loop '===== End of program ========================================================== End 'end program '----- Subroutines ------------------------------------------------------------- Sub GetPulse(PulseLength As Word) PulseLength = 0 Bitwait Pina.0 , Set Timer1 = 0 Start Timer1 Bitwait Pina.0 , Reset Stop Timer1 PulseLength = Timer1 Timer0 = Timer0PreSet End Sub '----- Interrupts -------------------------------------------------------------- Mispulse: Incr PulseError If PulseError > 10 Then Stop Timer0 LED1 = 1 Waitms 200 PulseError = 0 LED1 = 0 Start Timer0 End If Return Und jetzt die Variante mit den Interrupts '----- Titel ------------------------------------------------------------------- ' Module.......: SchaltkanalStart_Int0.bas ' Purpose......: Reads pulses of a Rx channel controled by Tx switch function ' and displays measured values on Bascom's terminal emulation ' To store readings open terminal log file before reading ' Number of cycles to read in constant LoopRead ' Author.......: Jürgen Laakmann ' Version......: 0.1 ' MCU..........: ATmega16 using Pollin evaluation board ' Bascom.......: V2.0.7.5 '------------------------------------------------------------------------------- '----- Change History ---------------------------------------------------------- ' 27.12.2012 V0.1: Created '------------------------------------------------------------------------------- '----- Function ---------------------------------------------------------------- ' Parameter..: PulseLength ' Return.....: Measured Tx signal pulse length '------------------------------------------------------------------------------- '----- Settings ---------------------------------------------------------------- $regfile = "m16DEF.Dat" $crystal = 1000000 $baud = 4800 $hwstack = 32 $swstack = 10 $framesize = 40 '----- Constants --------------------------------------------------------------- Const LoopRead = 20 'defines number of RC signal read cycles Const Timer0PreSet = 6 'gives interrupt after 255 ms with prescale = 1024 Const ErrorTolerance = 10 'number of errors before showing error condition '----- Variables --------------------------------------------------------------- Dim PulseLength As Word Dim PulseNumber(LoopRead) As Word 'stores readings of RC signal Dim PulseError As Byte 'stores errors, given by Timer0 Dim Count As Byte 'used as loop counter Dim ErrorFlag as Bit Dim RC_Read as Bit RC_In alias Pind.2 '----- Ansteuerung Pollin Evaluation Board ------------------------------------- Dim KeyPressed as Bit ddrd = &B11100000 'PinD5-7 output, PinD0-4 input ' portD = &B11111111 'PullUp PinD0-7 active ' Key1 Alias Pind.2 'used to read RC signal Key2 Alias Pind.3 Key3 Alias Pind.4 LED1 Alias Portd.5 LED2 Alias Portd.6 Buzzer Alias Portd.7 '----- Initialization ---------------------------------------------------------- 'RS232-Communikation: I/O-Puffer Config Serialin = Buffered , Size = 20 Config Serialout = Buffered , Size = 20 'LCD configuration Config LCD = 16 * 1 Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.2 , Rs = Portb.0 Cls Config int0 = Change 'used for RC signal Config Timer0 = Timer , Prescale = 1024 Stop Timer0 Config Timer1 = Timer , Prescale = 1 Stop timer1 Timer0 = Timer0PreSet On Timer0 Mispulse On INt0 GetPulse For Count = 1 to LoopRead Step 1 PulseNumber(Count) = 0 Next Count PulseError = 0 Reset ErrorFlag Set RC_Read LED1 = 0 : LED2 = 0 'LED's on board off Timer0 = Timer0PreSet timer1 = 0 '===== Program ================================================================= ' Waits until Key2 is pressed Cls Upperline : Lcd "Ready?" Lowerline : Lcd "Press K2" Bitwait Key2 , Set Reset Key2 ' key bounces, re-sets key for next stop point Cls Upperline : Lcd "Running" Enable Timer0 : Enable Timer1 Start timer0 Enable Interrupts Do Count = 1 Enable Int0 While Count <= LoopRead ' PulseNumber(Count) = PulseLength Wend Disable INT0 Cls Upperline : Lcd "Done" Lowerline : Lcd "Press K2" Bitwait Key2 , Set Reset Key2 Upperline : Lcd "See term" Lowerline : Lcd "inal " Waitms 200 Print "Gemessene Pulslängen" For Count = 1 to LoopRead Step 1 If Count < 10 Then Print " " ; Count ; ";"; Else Print Count ; ";" ; End If Print PulseNumber(Count) Next Count Upperline : Lcd "New run?" Lowerline : Lcd "Press K2" Bitwait Key2 , set Cls Reset Key2 Upperline : Lcd "Running" Loop '===== End of program ========================================================== End 'end program '----- Interrupts -------------------------------------------------------------- GetPulse: If RC_Read = 1 then 'AND RC_In = 1 Then 'start Timer1 if positive signal on input Start Timer1 Reset RC_Read Else 'stop Timer1 if no positive signal Stop Timer1 PulseNumber(Count) = Timer1 Set RC_Read Incr Count Timer1 = 0 End If Timer0 = Timer0PreSet Return Mispulse: Set ErrorFlag Incr PulseError If PulseError > ErrorTolerance Then Stop Timer0 LED1 = 1 Waitms 200 LED1 = 0 PulseError = 0 Reset ErrorFlag Start Timer0 End If timer0 = Timer0PreSet Timer1 = 0 Return Die gemessenen Werte habe ich in eine Tabellenkalkulation übertragen http://jl.schiffsmodell.net/SchaltkanalMessung.ods In beiden Fällen gibt es einen Synchonisationsimpuls, dem dann die 8 Werte der einzelnen Kanäle folgen. Erstaunlich finde ich nur, dass die verwendete Messmethodik einen Einfluss hat; beim Lesen mittels Funktion ist der SyncImpuls der längste, beim Lesem mit den Interrupts ist es der kürzeste Messwert. Hat jemand eine Idee, warum das so ist?
- 4 replies
-
- microprozessor
- fernsteuerung
-
(and 1 more)
Tagged with:
-
So, dann eröffnen wir mal den Reigen. Hier könnt ihr einfach mal Fragen zur Programmierung, zur Software, zur IDE stellen. Auch ich hab ein paar Fragen an euch. Welche Projekte würden euch denn mal interessieren? Was würdet ihr gerne mal realisieren, habt aber Probleme? Immer her damit. Folgende Themen hätt ich schon in der Warteschlange: - volle Jet Antriebssteuerung für 2-Kanalfunke - 8-Kanal-Schalter - Lageregellung (für was auch immer) - Lichtsteuerung eines Schleppers. Die Reihenfolge stellt keine Priorität dar.
-
So... ohne etwas Weichware wird das nix, folgende Programme werden für das Tutorial benötigt: a) Bascom-AVR 2.0.7.5, als Demoversion herunterzuladen bei MCS-Electronics. Die Software ist auch in der Demo voll funktionsfähig, nur der programmierbare Code ist auf 4kB beschränkt. Hört sich wenig an, reicht aber für die meisten Anwendungen schon gut aus. b) AVR8 Burn-O-Mat v2, herunterzuladen bei Torsten Brischalle. Da Bascom nicht direkt über den USB-Adapter (zumindest nicht ohne größere Verenkungen) und schon gleich gar nicht über die RS232 auf die ISP-Schnittstelle des Boards zugreifen kann, benötigen wir dieses Programm, um einen kompilierten Basic-Quellcode (das HEX-File) komfortabel auf den Prozessor zu übertragen. Außerdem kann man mit diesem recht schön gemachten Tool auch die Lock- und FuseBits der Prozessoren einstellen. c) WIN_AVR, herunterzuladen bei sourceforge Brauchen wir zwar nicht zum Programmieren (es sei denn, jemand möchte "C" ausprobieren), aber Burn-O-Mat braucht den AVRDude-Treiber zum Flashen. Alle Programme laufen bei mir unter WIN7 stabil, mit XP oder anderen Systemen habe ich sie nicht getestet. Viele Grüße Torsten
-
Atmel Evaluations Board V2.0.1 - Aufbau
Torsten posted a topic in Experimentierumgebung selbstgebaut - die Hardware
Hallo Leute, in diesem Beitrag möchte ich euch den Bau des Bards beschreiben. Wer sich das Fertig-Board zugelegt hat, kann den Teil also auslassen. Grundsätzlich ist der Bau des Boards sehr einfach. Die Teilelisten und der Bauplan sind gut und übersichtlich, so das kaum Probleme auftreten dürften. Sämtliche Signal-PINs der verschiedenen Prozessortypen sind auf der 40-pol. Schnittstelle zu finden, dort lassen sie sich später komfortabel mit eigenen Schaltungen abgreifen. Wichtig ist, bei den Widerständen und Kondensatoren auf die richtigen Werte zu achten, damit man sie auch wirklich am vorgesehenen Ort einpflanzt. Widerstände sind farb-codiert, eine entsprechende Tabelle ist z.B. HIER zu finden. Die Dioden haben an einem Ende einen Ring, dieser zeigt die Sperrseite und entspricht dem "Querstrich" im Schaltplan und Bestückungsdruck. Lassen wir ein paar Bilder sprechen: Die Handvoll Einzelteile... etwas vorsortieren macht Sinn! Die Reihenfolge des Einbaus ist fast egal... ich fange immer mit Widerständen und Dioden an, dann die IC-Sockel, und zum Schluss die höheren Bauteile wie Steckverbinder und Elkos. Vom Lötkolben abgesehen, mehr Werkzeug braucht man fast nicht - die Biegevorrichtung ist ein sehr sinnvolles Zubehör, wenn man öfters mal etwas Elektronik zusammenbruzzeln möchte. Bitte nicht grade Opas Dachdecker-Lötkolben verwenden... ein vernünftiger Elektronik-Lötkolben mit feiner Spitze sollte es schon sein. Die Platine... sauberer Bestückungsaufdruck, präzise Lötstoppmaske... gute Qualität! Wenn man die Bauteil-Beinchen (Bei IC-Sockeln reichen schon die vier Ecken...) nach dem Einsetzen ein wenig umbiegt, kann man sie relativ gewaltfrei verlöten. Das gilt sinngemäß auch für Widerstände etc. Wichtig: erst verlöten, dann abkneifen! Die Kondensator-Bezeichnungen sind leider etwas kryptisch: .33J63 => 330nF (3 Stück) für Tasterentprellung .1J63 => 100nF (6 Stück) für IC-Versorgungen 22 (die Braunen) => 22pF für die Quarze Polung ist bei diesen Kondensatoren egal. Die IC-Sockel haben eine Kerbe, die mit dem Bestückungsaufdruck übereinstimmt. Die IC´s haben ebenfalls Kerben, die dann später das polrichtige Einsetzen erleichtern. Zur Orientierung, von oben gesehen, ist links von der Kerbe immer PIN 1, dann geht es gegen den Urzeigersinn 1x rum bis zum letzten PIN rechts von der Kerbe. Auch die Wannenstecker haben eine Kerbe in der Mitte der langen Seite, die zum Bestückungsaufdruck passen sollte, sonst wird´s hinterher unübersichtlich, wenn man auf einen bestimmten PIN zugreifen möchte. Bei den Quarzen darauf achten, dass sie an der richtigen Stelle auf dem Board eingelötet werden (es gibt einen 8 MHz- und zwei 16 MHz-Quarze). Eine Polarität haben sie allerdings nicht. Die Elkos sind gepolt (dicker weisser Balken zeigt Minus-Anschluss), und bei diesen Bauteilen muß die Polarität auch unbedingt beachtet werden, sonst raucht´s... Die Polung der LED´s war bei meiner Bauform nicht recht erkennbar... normalerweise ist an der Minus-Seite das Gehäuse abgeflacht und/oder der längere Anschluss-Draht Plus. Im Zweifelsfall durchmessen (Ohm-Meter, Dioden-Tester). Die beiden 9-pol. SUB-D-Buchsen (für RS232-Anschluss) sollten auch an ihren beiden Halte-Rasten verlötet werden, um festen Sitz und gute Abschirmung zu erreichen. Der Summer ist ebenfalls gepolt, Plus-Markierung ist oben auf dem Bauteil. Für den ersten Test reicht auch mal eine 9V-Blockbatterie. Die Polarität an den Anschlussklemmen ist übrigens egal, weil das Board eine Brücken-Gleichrichtung drauf hat. Es kann also wahlweise mit Gleich- oder Wechselstrom betrieben werden. Den Spannungsregler habe ich mit einem Kühlkörper versehen. Braucht man aber nicht unbedingt, wenn man später nicht grade die fettesten Servos zum Testen ans Board hängt, geht´s auch Ohne. So... wer bis hierhin durchgehalten hat, kann schon anfangen, sich mit unserem ersten Testprogramm für das Board zu beschäftigen! Und wie immer gilt: bei Fragen -> fragen... Viele Grüße Torsten -
Hallo Forum, in dieser Ecke möchte ich euch ein wenig die Atmel-Programmierung näherbringen. Das Ganze richtet sich an die Einsteiger unter euch und soll die Grundlagen vermitteln, die beim Umgang mit diesen sehr nützlichen Käfern erforderlich sind. Man findet so einige Seiten im Netz, die sich rein mit Prozessor-Programmierung befassen... also, warum hier das Rad erneut erfinden? Nun, da gibt´s gleich mehrere Gründe: a) Rein auf R/C-Technik bezogen findet man dann doch nicht grade viel im Web. b) Die Erklärungen auf den "Profiseiten" versteht man als Einsteiger nur schwer. c) Hier wurde öfters schon Interesse an dieser faszinierenden Technik bekundet (ja, auch die Arduinos sind Atmel-Prozessoren...) d) Das hier ist einfach mein Lieblingsforum... Wer jetzt glaubt, das sei ein teurer Spaß, den kann ich beruhigen. Die Kosten für die erforderliche Hard- und Software bleiben absolut überschaubar. Als Experimentierumgebung gefällt mir das Atmel Evaluations Board V2.0.1 von Pollin sehr gut, und die hier vorgestellten Beispiele werden auch darauf aufbauen. Aber dazu mehr im Hardware-Teil. Die Programme schreibe ich in Basic (Bascom von MCS Electronics). Jaaaa... ich höre schon den Aufschrei der C-Programmierer, dass Basic keine Programmiersprache sei und C ist das Maß aller Dinge... solche Diskussionen können wir uns schenken, denn ich kann kein C, und außerdem habe ich bisher noch alle Progrämmchen mit Basic recht gut hinbekommen. Außerdem halte ich die Sprache für recht einsteigerfreundlich... C kommt doch grade zu Anfang recht kryptisch rüber. Sollte sich allerdings jemand unter euch finden, der die gegebenen Beispiele einmal 1:1 in C umsetzen möchte, bitte Bescheid geben. Dann richten wir hier gerne eine entsprechende Ecke ein. Noch ein kleiner Nachtrag: Die Hardware- und die Beispielprogramme sind für eure Postings gesperrt, um die Themen dort nicht zu sehr mit Fragen und Diskussionen zu zerfleddern. Es sollen ja gewissermaßen Anleitungen werden, die auch später noch gut lesbar sein sollen. Bei Fragen etc. postet bitte in der jeweiligen Diskussionsecke - läuft also so ähnlich wie bei den Bauberichten. Viele Grüße Torsten
-
Für meine Starteruhr stehen die nächsten Erweiterungen an. Ich will versuchen mit den Startsignal automatisch eine Wettkampfuhr zu starten. Die steht natürlich dann am Ufer... Bin aber noch auf der Suche nach den richtigen Funksendern dafür. Was brauche ich? Ich brauche eine Transceiver, also Sende und Empfangsmodule in einem, da die Kommunikation in beide Richtungen gehen muss. (Ich muss die Uhr starten können und dann das eigentliche Startsignal wieder zurück bekommen.) Es muss auf dem Wasser gut und sicher funktionieren. Reichweite ca. 100m. (Das sind dann wahrscheinlich nir 30m im realbetrieb) Am liebsten natürlich was, wo ich wenig selber programmieren muss. Deswegen scheiden die einfachen 3€ Module aus. Am besten auch was mit Zertifikat, nicht das die Behörden meine Uhr beschlagnahmen. Und es muss sich mit den üblichen RC Anlagen vertragen. Auch deswegen wären 433 oder 868 MHz am besten... Hat wer vielleicht eine Idee? Bisher sind mir nur folgende Übertragungsmodule über den Weg gelaufen: Bluetooth: Klasse2 oder Klasse 3 Module (50m bzw. 100m) ~20€ (2,4GHz) XBee (ZigBee): 30m - 100m (868MHz o. 2,4GHz) WLAN: 30m - 100m (2,4GHz oder 5GHz) RFBee: 50m-120m (868MHz) oder eben was anderes aus den verschiedenen Funkmodulen. Hat wer schon mal damit Erfahrungen gemacht? Meine Ergebnisse bisdher sind folgende (lass mich aber auch gerne überzeugen...) Bluetooth: zu teuer und muss immer gebunden werden. XBee: Auch relativ teuer, recht unsicher, da es sich angeblich nicht mit Bluetooth, WLAN und 2,4GHz RC Anlagen verträgt (hörensagen...) WLAN: recht teuer, nur P2P Modus, und dann reicht manchmal die Reichtweite nicht. RFBee: ? relativ günstig, aber keinerlei Erfahrungen damit... Und nun ?