-
        

Seite 1 von 4 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 34

Thema: mega8 oder tiny2313 oder tiny45 oder ... ?

  1. #1
    Erfahrener Benutzer Roboter Genie Avatar von Willa
    Registriert seit
    26.10.2006
    Ort
    Bremen
    Alter
    37
    Beiträge
    1.269

    mega8 oder tiny2313 oder tiny45 oder ... ?

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    Hallo!
    Ich bin auf der Suche nach einer Controllerempfehlung für ein kleines Teilprojekt. Was ich machen möchte:
    Ich möchte einen Konverter bauen, der aus einem I²C Signal ein PWM Signal macht. Quadrocopter etc. werden oft mit Brushlessreglern betrieben die auf I²C umgebaut wurden (aufwändig) oder mit speziellen I²C Reglern (teuer). Jetzt möchte ich es gerne möglich machen ganz normale PWM Regler zu benutzen (billig), die durch meine I²C->PWM Konverter an Coptern betrieben werden können. Es gibt schon ein paar Leute die etwas ähnliches gemacht haben, allerdings finde ich die Lösungen meist nicht ganz optimal.
    Ich möchte gerne drei getrennte Controller verwenden, für jeden Motorsteller einen eigenen. Dadurch verspreche ich mir ein sehr sauberes, schnelles PWM Signal, ohne monatelang meinen Code zu optimieren/ in Assembler zu schreiben etc. In Bascom ist es mir noch nicht geglückt drei wirklich saubere PWM Signal mit 400Hz zu erstellen. Aber welche Controller verwende ich nun dafür? Bascom nutzt anscheinend eh kein Hardware I²C, deswegen kommen die tiny2313/45 doch in Frage, oder? Ich will bei allen Controllern die ISP Schnittstelle benutzen, kann ich die dann doppelt belegen? D.h. kann ich beim tiny 45 den Pin B.2 als SCK benutzen fürs Programmieren und gleichzeitig z.b. als PWM Pin? Wie schnell kann bei den Tinys der interne Oszillator maximal schwingen? (Wenn mein Text euch konfus vorkommt, dann liegt das daran dass ich irgendwie Grippe oder so habe....)
    Viele Grüße, William
    -> http://william.thielicke.org/

  2. #2
    Erfahrener Benutzer Roboter Genie Avatar von Willa
    Registriert seit
    26.10.2006
    Ort
    Bremen
    Alter
    37
    Beiträge
    1.269
    Ich habe mal einen Schaltplan und ein Layout für den Tiny45 gemacht. Der µC wäre mein Favorit, wenn das denn so funktioniert wie ich mir das denke... Kann ich den Pin B.2 als ganz normalen Output Pin nutzen...? Mein Schaltplan könnte doch so funktionieren, oder? werde mir evtl. mal einen Tiny4 als DIP holen und das auf dem Steckbrett ausprobieren. Wie ich das Ganze programmiere (Bascom) weiss ich auch noch nicht so recht....
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken tiny45i2cppm.jpg  
    Viele Grüße, William
    -> http://william.thielicke.org/

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    15.06.2008
    Ort
    Rösrath
    Alter
    33
    Beiträge
    332
    Warum benutzt du für die PWM-Ausgabe nicht einen von den Hardware-PWM-Ports? Der Attiny45 hat soweit ich mich erinnere 3 davon, wobei einer auf 2 Pins jeweils normal und invertiert ausgegeben werden kann. Denn Software-I2C & Software-PWM zusammen braucht vermutlich einen Quarz, damit du auf brauchbare Frequenzen kommst.

    Edit: Wenn du mit dem PWM einen Servo ansteuern willst, könnte eine Softwareansteuerung tatsächlich Sinn machen - dann würde ich aber den Hardware-I2C nutzen! Kann mir kaum vorstellen, dass Bascom nur Software-I2C kann :O

  4. #4
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Im prinzip sollte der Tiny45 gehen. Aller dings ist die Auswahl der Pins sehr ungünstig: PB2 ist so ziehmlich der einzige Pin der keinen Hardware PWM kann.

    Wenn man die I2C Schnittstelle in Software machen will / muß, könnte es so gehen. Sonst sollte man für I2C besser die Dafür vorgesehenen Pins nehmen (PB2 und PB0 für Takt und Daten).
    PB1 und PB4 könnte man dann als PWM Ausgänge nutzen.

    Die ISP Pins kann man meistens auch für was anderes nutzen. Ausgänge sollten keine zu großen Lasten (< 1 K) treiben, Eingänge sollte man über etwa 2,2 K entkoppeln, so daß der ISP Mode ggf. der stärkere ist.

  5. #5
    Erfahrener Benutzer Roboter Genie Avatar von Willa
    Registriert seit
    26.10.2006
    Ort
    Bremen
    Alter
    37
    Beiträge
    1.269
    Hi!
    Danke für eure Tipps. I²C und PWM habe ich nun an den richtigen Pins. Es scheint wirklich so zu sein, dass Bascom nur Software I²C macht wenn man nicht irgendeine zusätzliche Lib kauft. Das PWM ist für ein Modellbau Motorsteller (=Servo). Bisher habe ich das immer als Software PWM gelöst, wenns per Hardware geht (wie......?) macht das aber vielleicht auch Sinn...?
    Viele Grüße, William
    -> http://william.thielicke.org/

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    43
    Beiträge
    2.240
    Bascom kann I2C senden sowohl Hard- als auch Software.
    Für den Empfang schauts da nicht so gut aus, da brauchts dann die
    Lib dazu oder... es gab hier mal nen Thread mit nem Workaround
    über die Register direkt.
    Vor den Erfolg haben die Götter den Schweiß gesetzt

  7. #7
    Erfahrener Benutzer Roboter Genie Avatar von Willa
    Registriert seit
    26.10.2006
    Ort
    Bremen
    Alter
    37
    Beiträge
    1.269
    Für den Empfang schauts da nicht so gut aus, da brauchts dann die
    Lib dazu oder... es gab hier mal nen Thread mit nem Workaround
    über die Register direkt.
    Ich brauche für meinen Konverter den Empfang. Eigentlich ist mir (Software) I²C schon kompliziert genug, mal sehen ob ich das mit Hardware irgendwie hinbekomme....
    Viele Grüße, William
    -> http://william.thielicke.org/

  8. #8
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Mit einem 16 Bit Timer kann man das PWM Signal sehr gut direkt vom Timer erzeugen, aber der Tiny44 hat nur einen 8 Bit Timer.
    Es sollte auch mit dem 8 Bit timer gehen einen Puls definierter Länge zu erzeugen. Die lange Pause wird man dann wohl weiter in Software machen, nur den eigentlichen Puls könnte der Timer bestimmen. Wie genau wüßte ich jetzt aber auch noch nicht, da müßte man erstmal nachlesen ob die PWM Werte gepuffert werden.
    Zumindestens sehe ich keinen Nachteil, wenn der Pin auch für Hardware PWM geht - die reine Softwarelösung kann man ja immernoch machen.

    Wegen dem Timing wäre es schon besser wenn man nicht beides, I2C und das PWM Signal in Software macht. Die könnten sich schon etwas in die Quere kommen.

    Bei der Software PWM Lösung sollte man auch mehr als einen PWM kanal machen könnten. Wenn das einmal klappt, dann spricht nichts dagen auch mehr Kanäl nacheinander zu machen.

  9. #9
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    15.06.2008
    Ort
    Rösrath
    Alter
    33
    Beiträge
    332
    Imho würde es dann mehr Sinn machen, die PWM komplett in Software zu bauen, Hardware-PWM mit Software-Pause klingt nach einem ziemlichen Gekrampfe ohne Vorteile..

  10. #10
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Beim Servosignal ist nur die Pulsdauer wirklich wichtig, die Pause ist weniger kritisch. Per Hardware hat man den Vorteil, daß der Puls immer gleich ist, nur die Fehler des Oszillators hat man noch. Per Software hat man es schwer besser als etwa +-2 Zyklen zu werden. Es geht, ist aber nichte enfach. Außerdem hat man bei Software PWM eventuell ein kleinere Auflösung, da man ja für jeden Schritt einen Interrupt braucht.
    Bei z.B. 1 MHz Taktfrequenz kommt man selbst in ASM für ein Software PWM im interrupt kaum unter etwa 15 µs Auflösung. Für den etwa 1 ms Steuerbereich den man bei den Servos hat, sind das nur etwa 6 Bit Auflösung. Wenn dann auch noch parallel I2C in Software laufen soll, wird es noch einiges schlechter, vermutlich sogar unbrauchbar.

    Einen Puls durch den Hardware timer erzeugen zu lassen ist dagegen nicht so schwer:
    Man setzt den Startwert des Timer und den Wert für die Vergleichereinheit so, das der Ausgang bei erreichen des Vergleichswertes zurückgesetzt wird. Dann setzt man den Ausgang auf high und startet den Timer. Um das Ende des Pulse kümmert sich dann die Hardware. Wenn man bei 1 MHz Takt noch einen Vorteiler von 8 nutzt, hat man 8 µs Auflösung für Zeiten bis etwa über 2 ms. Das geht auch in Basic, ohne zusätzliche Fehler und ohne die Gefahr, das einem irgendwo ein Interrupt dazwischenfunkt. Auch mit nur einem 8 Bit Timer kann man ohne den Vorteiler arbeiten. Es wird dann aber schon etwas komplizierter, weil man die Überläuft in Softwäre zählen muß. Den Feinabgleich macht man dann besser mit dem Startwert. Ist nicht ganz einfach aber das müßte gehen.

Seite 1 von 4 123 ... LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •