-         

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 22

Thema: Mit PWM die Spannung halbieren?

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    08.04.2012
    Beiträge
    37

    Frage Mit PWM die Spannung halbieren? - Fehler im RN-VN2?

    Anzeige

    Ich habe am RN-Control ein RN-VN2 angeschlossen und beide Boards werden mit einer (Bleiakku) Spannung von ~12v betrieben. Die zu steuernden Motoren vertragen allerdings nur 6V und ich rätsel jetzt, wie ich die Spannung softwareseitig mit Bascom runter bekommen kann (oder macht man sowas mit der Hardware)?

    http://www.rn-wissen.de/index.php/Pwm und http://www.rn-wissen.de/index.php/Bascom_und_PWM habe ich gesehen, aber hat mir nicht wirklich geholfen bei dem Punkt.

    Timer1 setze ich derzeit so:
    Code:
    Config TIMER1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down
    ...
    TCCR1B = TCCR1B Or &H02   'in einem Beispielsource mal gesehen und blind versucht bzw. alternativ->
    Tccr1a = &B10100010
    Tccr1b = &B10000010
    Versucht habe ich auch noch Prescale 8 oder 1, aber egal was ich ändere, die Spannung der Motoren (mit Voltmeter gemessen) ändert sich nur zu wenig - egal ob

    Pwm1a= 10
    Pwm1a= 1000

    Blickt da jemand besser durch als ich?
    Geändert von pin117 (19.04.2012 um 13:47 Uhr)

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    08.04.2012
    Beiträge
    37
    Hinweis: Bei der Netzteilspannung sollte man beachten, das auch die Motoren die volle Spannung vertragen.
    Verträgt Ihr Motor beispielsweise nur 6V, so kann zwar auch ein 12V Netzteil verwendet werden, jedoch muss
    man dann beim Ansteuern darauf achten das man „nie Vollgas gibt“, also das PWM-Signal entsprechende
    programmiert. Dies ist im übrigen recht einfach!

    ...habe ich gerade gelesen und ja es stimmt, wenn man es weiss ist alles einfach, nur wie.

    Wie gesagt, selbst bei 10 PWM spuckt mir das Messgerät am Motorport noch 12.xV aus

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von 021aet04
    Registriert seit
    17.01.2005
    Ort
    Niklasdorf
    Alter
    29
    Beiträge
    4.544
    Mit was hast du gemessen? Ich müsste im DB schauen was für ein Bit was macht. Das ist sehr unübersichtlich (vielleicht liegt es auch an Bascom, ich arbeite mit AVR Studio). Wenn du mit einem Oszi misst ist es klar das du die 12V misst. Die Spitzenspannun bleibt immer gleich. Der Unterschied ist der Mittelwert. Wenn du 12V hast und eine PWM von 50% hast (50% ein, 50% aus) hast du im Schnitt 50% von 12V, das sind 6V.

    Wenn du ein normales Multimeter hast solltest du, wenn die PWM Frequenz hoch genug ist eine Spannung messen die dem PWM entspricht (bei 50% also 6V). Du musst Gleichspannung messen.

    MfG Hannes

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    08.04.2012
    Beiträge
    37
    Gemessen mit normalem Voltmeter (Voltcraft VC170) und Gleichspannung.

    Bei einem PWM 0 ist die Spannung am Motor Anschluss identisch zur Eingangsspannung des RN-VN2 am Motorenport.
    Bei PWM 25 geht sie 0,05V hoch ?!?

  5. #5
    Erfahrener Benutzer Robotik Einstein Avatar von 021aet04
    Registriert seit
    17.01.2005
    Ort
    Niklasdorf
    Alter
    29
    Beiträge
    4.544
    Es gibt 2 Möglichkeiten. Entweder ist die Einstellung falsch (mit Bascom kenne ich mich nicht aus da ich mit AVR Studio programmiere) oder das Messgerät misst falsch.

    MfG Hannes

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    08.04.2012
    Beiträge
    37
    Wenn die Motoren dranhängen sind sie auch deutlich zu schnell und zum Glück hällt das Metallgetriebe es kurzzeitig aus, bis ich den Schalter erwischen kann.

    Was meinst Du mit falsch eingestellt?

    PS: Verbunden sind
    RN-Control [PortC PIN 7] (PC6) mit dem RN-VN2 [PIN 2] - Motor 1 IN 1
    RN-Control [PortC PIN 8] (PC7) mit dem RN-VN2 [PIN 1] - Motor 1 IN 2

    RN-Control [PortB PIN 1] (PB0) mit dem RN-VN2 [PIN 3] - Motor 2 IN 1
    RN-Control [PortB PIN 2] (PB1) mit dem RN-VN2 [PIN 4] - Motor 2 IN 2

    RN-Control [PortD PIN 5] (PD4) mit dem RN-VN2 [PIN 6] - PWM Motor 1
    RN-Control [PortD PIN 6] (PD5) mit dem RN-VN2 [PIN 8] - PWM Motor 2

    Am RN-Control und am RN-VN2 liegen jeweils 12V vom Labornetzteil und PORTC 5V/GND auf RN-VN2

    Ich habe die Bascom Testdatei "mcontroltestmega32.BAS" unverändert von der CD geladen.
    Code:
    '###################################################
    'rncontroltest.BAS
    'für
    'RoboterNetz Board RN-Control ab Version 1.1
    'Das neue preiswerte Controllerboard zum experimentieren
    '
    'Aufgabe:
    ' Dieses testprogramm testet gleich mehrere Eigenschaften auf dem Board
    ' Den verschiedenen Tasten sind bestimmte Funktionen zugeordnet
    ' Taste 1: Zeigt Batteriespannung über RS232 an
    ' Taste 2: Angeschlossene Motoren beschleunigen und abbremsen
    ' Taste 3: Einige male Lauflicht über LED´s anzeigen. Am I2C-Bus
    '          darf in diesem Moment nichts angeschlossen sein
    ' Taste 4: Zeigt analoge Messwerte an allen Port A PIN´s über RS232 an
    ''Taste 5: Zeigt digitalen I/O Zustand von PA0 bis PA5 an
    
    
    ' Ser gut kann man aus dem Demo auch entnehmen wie Sound ausgegeben wird,
    ' wie Tasten abgefragt werden und wie Subroutinen und Funktionen angelegt werden
    
    'Autor: Frank
    'Weitere Beispiele und Beschreibung der Hardware
    'unter http://www.Roboternetz.de oder robotikhardware.de
    '#######################################################
    
    
    Declare Sub Batteriespannung()
    Declare Sub Motortest()
    Declare Sub Lauflicht()
    Declare Sub Showporta()
    Declare Sub Showdigitalporta()
    Declare Function Tastenabfrage() As Byte
    
    
    $regfile = "m32def.dat"
    $framesize = 32
    $swstack = 32
    $hwstack = 32
    
    
    Dim I As Integer
    Dim N As Integer
    Dim Ton As Integer
    
    $crystal = 16000000                                         'Quarzfrequenz
    $baud = 9600
    
    Config Adc = Single , Prescaler = Auto                      'Für Tastenabfrage und Spannungsmessung
    
    Config Pina.7 = Input                                       'Für Tastenabfrage
    Porta.7 = 1                                                 'Pullup Widerstand ein
    
    
    Const Ref = 5 / 1023                                        'Für Batteriespannungsberechnung
    
    Dim Taste As Byte
    Dim Volt As Single
    
    ' Für Motorentest
    'Ports für linken Motor
    Config Pinc.6 = Output                                      'Linker Motor Kanal 1
    Config Pinc.7 = Output                                      'Linker Motor Kanal 2
    Config Pind.4 = Output                                      'Linker Motor PWM
    'Ports für rechten Motor
    Config Pinb.0 = Output                                      'Rechter Motor Kanal 1
    Config Pinb.1 = Output                                      'Rechter Motor Kanal 2
    Config Pind.5 = Output                                      'Rechter Motor PWM
    Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down
    Pwm1a = 0
    Pwm1b = 0
    Tccr1b = Tccr1b Or &H02                                     'Prescaler = 8
    
    
    
    
    
    I = 0
    Sound Portd.7 , 400 , 450                                   'BEEP
    Sound Portd.7 , 400 , 250                                   'BEEP
    Sound Portd.7 , 400 , 450                                   'BEEP
    Print
    Print "**** RN-Control 1.4 *****"
    Print "Das neue Experimentier- und Roboterboard"
    Print "Weitere passende Zusatzboards bei www.robotikhardware.de"
    Print
    Do
    
    
    
    
       Taste = Tastenabfrage()
       If Taste <> 0 Then
    
          Select Case Taste
             Case 1
                Call Batteriespannung                           'Taste 1 Zeigt Bateriespannung über RS232 an
             Case 2
                Call Motortest                                  'Taste 2 Motoren beschleunigen und abbremsen
             Case 3
                Call Lauflicht                                  'Einige male Lauflicht über LED´s anzeigen. Am I2C-Port darf in diesem Moment nichts angeschlossen sein
             Case 4
                Call Showporta                                  'Zeigt Messwerte an allen Port A PIN´s
             Case 5
                Call Showdigitalporta                           'Zeigt digitalen I/O Zustand von PA0 bis PA5 an
    
    
    
          End Select
          Sound Portd.7 , 400 , 500                             'BEEP
       End If
    
       Waitms 100
    Loop
    
    End
    
    
    
    
    'Diese Unterfunktion fragt die Tastatur am analogen Port ab
    Function Tastenabfrage() As Byte
    Local Ws As Word
    
       Tastenabfrage = 0
       Ton = 600
       Start Adc
       Ws = Getadc(7)
      ' Print "Tastenabfrage anpassen!ADC Wert ws=" ; Ws
       If Ws < 500 Then
          Select Case Ws
             Case 400 To 450
                Tastenabfrage = 1
                Ton = 550
             Case 330 To 380
                Tastenabfrage = 2
                Ton = 500
             Case 260 To 305
                Tastenabfrage = 3
                Ton = 450
             Case 180 To 220
                Tastenabfrage = 4
                Ton = 400
             Case 90 To 130
                Tastenabfrage = 5
                 Ton = 350
     '        Case Else
    '              Print "Tastenabfrage anpassen!ADC Wert ws=" ; Ws
          End Select
          Sound Portd.7 , 400 , Ton                             'BEEP
    
       End If
    
    '   If Ws < 1023 Then
    '      Select Case Ws
    '         Case 895 To 910
    '            Tastenabfrage = 1
    '            Ton = 550
    '         Case 870 To 894
    '            Tastenabfrage = 2
    '            Ton = 500
    '         Case 650 To 690
    '            Tastenabfrage = 3
    '            Ton = 450
    '         Case 450 To 480
    '            Tastenabfrage = 4
    '            Ton = 400
    '         Case 220 To 280
    '            Tastenabfrage = 5
    '            Ton = 350
    '      End Select
    '      Sound Portd.7 , 400 , Ton                             'BEEP
    '    End If
    
    End Function
    
    
    
    'Diese Unterfunktion zeigt Batteriespannung an
    Sub Batteriespannung()
    Local W As Word
       Start Adc
       W = Getadc(6)
       Volt = W * Ref
       Volt = Volt * 5.2941
       Print "Die aktuelle Spannung beträgt: " ; Volt ; " Volt"
    
    End Sub
    
    
    'Testet Motoren und Geschwindigkeitsreglung
    Sub Motortest()
       'Linker Motor ein
       Portc.6 = 1                                              'bestimmt Richtung
       Portc.7 = 0                                              'bestimmt Richtung
       Portd.4 = 1                                              'Linker Motor EIN
    
       'Rechter Motor ein
       Portb.0 = 1                                              'bestimmt Richtung rechter Motor
       Portb.1 = 0                                              'bestimmt Richtung rechter Motor
       Portd.5 = 1                                              'rechter Motor EIN
    
    
       I = 0
       Do
          Pwm1a = I
          Pwm1b = I
          Waitms 40
          I = I + 5
       Loop Until I > 1023
    
       Wait 1
       Do
          Pwm1a = I
          Pwm1b = I
          Waitms 40
          I = I - 5
       Loop Until I < 1
       Pwm1a = 0                                                'Linker Motor aus
       Pwm1b = 0                                                'rechter Motor aus
    End Sub
    
    
    'Einige male Lauflicht über LED´s anzeigen. Am I2C-Port darf in diesem Moment nichts angeschlossen sein
    Sub Lauflicht()
    
       Config Portc = Output
       Portd = 0
       For N = 1 To 10
          For I = 0 To 7
             Portc.i = 0
             Waitms 100
             Portc.i = 1
          Next I
       Next N
       Config Portc = Input
    End Sub
    
    
    'Zeigt Die Analogen Messwerte An Port A An
    Sub Showporta()
    Local Ws As Word
    
       Config Porta = Input
       For I = 0 To 5                                           ' Alle internen Pullup Widerständ ein,bis auf Batteriespannungsmessungsport
          Porta.i = 1
       Next I
    
       Print
       Print "Ermittelte Messwerte an Port A:"
       For I = 0 To 7                                           ' Alle Eingäne inkl.messen
          Start Adc
          Ws = Getadc(i)
          Volt = Ws * Ref
          Print "Pin " ; I ; " ADC-Wert= " ; Ws ; " bei 5V REF waeren das " ; Volt ; " Volt"
       Next I
    End Sub
    
    
    'Zeigt den Zustand einiger freier I/O von Die Analogen Messwerte An Port A An
    Sub Showdigitalporta()
    Local Zustand As String * 6
       Config Porta = Input
       For I = 0 To 5                                           ' Alle internen Pullup Widerständ ein,bis auf Batteriespannungsmessungsport
          Porta.i = 1
       Next I
    
       Print
       Print "Ermittelter I/O Zustand Port A:"
       For I = 0 To 5                                           ' Alle Eingäne inkl.messen
          If Pina.i = 1 Then
             Zustand = "High"
          Else
             Zustand = "Low"
          End If
          Print "Pin " ; I ; " I/O Zustand= " ; Pina.i ; " " ; Zustand
       Next I
    End Sub
    Ergebnis nach dem Drücken des Tasters 2 geht die Spannung (gemessen mit Voltmeter auf Motor1) bis 12,34V hoch und wieder runter bis sie auf 12,08V bleibt. 12,08V ist bei dem Test auch die Spannung an beiden Platinen.

    Der L293D vom RN-Control ist entfernt.

    Fusebits: http://img16.imageshack.us/img16/5749/fuseru.jpg

    Aber irgendetwas stimmt da nicht.
    Geändert von pin117 (18.04.2012 um 16:03 Uhr)

  7. #7
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    27
    Beiträge
    3.517
    Blog-Einträge
    9
    Ich steige da jetzt nicht so ganz durch
    Kannst du mal deinen Aufbau posten + den Code den du verwendest (beides so wie du es hattest und wo es nicht funktioniert hat).
    Ansonsten betreib mal das RN-Control alleine und verwende dieses Programm hier:

    Code:
    ' Hardware PWM mit Timer1 
    
    $regfile = "m32def.dat"
    $crystal = 16000000  
    Config Portd.4 = Output 
    Config Portd.5 = Output  Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up , Prescale = 1 
    
    Do  
    
    Compare1a = 127 
    
    Loop  
    End
    Nun solltest du an Compare1A (D5) eine Spannung von 2,5V haben. Wenn das funktioniert setzt du mal die Motortreiber ein, legst Spannung an das RN-VN2 und aktivierst den Motortreiber (bei dem Motortreiber musst du ja einen von zwei Anschlüssen auf High setzen und eine PWM anlegen damit sich der Motor dreht). Nun solltest du eine Spannung von 6V an einem der Motoranschlüsse messen.
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  8. #8
    Benutzer Stammmitglied
    Registriert seit
    08.04.2012
    Beiträge
    37
    Ja, wenn ich das RN-VN2 abklemme bzw. alle Erweiterungen und Deinen Source einspiele, sind auf dem D5 2,5Volt.

    Wenn ich dann das VN2 dranhänge und den Code wie folgt ändere:
    ' Hardware PWM mit Timer1

    $regfile = "m32def.dat"
    $crystal = 16000000
    Config Portd.4 = Output
    Config Portd.5 = Output Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up , Prescale = 1

    Config PINB.0 = Output
    Config PINB.1 = Output
    PORTB.0 = 0
    PORTB.1 = 1

    Do

    Compare1a = 127

    Loop
    End
    Steht der Motor 2 auf 12 Volt

    RN-Control [PortD PIN 6] (PD5) <-> RN-VN2 [PIN 8] - PWM Motor 2 = 2,5V
    RN-Control [PortB PIN 2] (PB1) <-> RN-VN2 [PIN 4] - Motor 2 IN 2 = 5V
    RN-Control [PortB PIN 1] (PB0) <-> RN-VN2 [PIN 3] - Motor 2 IN 1 = 0V

    Ist das VN2 hinüber?

  9. #9
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    27
    Beiträge
    3.517
    Blog-Einträge
    9
    Hast du mal gemessen ob die Logikpegel stimmen?
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  10. #10
    Benutzer Stammmitglied
    Registriert seit
    08.04.2012
    Beiträge
    37
    Warum steht das dann in der Testdatei "mcontroltestmega32.BAS" von der CD???

    'Ports für rechten Motor
    Config Pinb.0 = Output 'Rechter Motor Kanal 1
    Config Pinb.1 = Output 'Rechter Motor Kanal 2
    Config Pind.5 = Output 'Rechter Motor PWM
    Zum messen der Logikpegel müsst ich wissen wie (nie gemacht) und frag mich, ob mein Messgerät sowas kann? Viel mehr hab ich hier nicht zum Messen. Oder meinst Du ob PB1 5V hat? Ja, wie oben beschrieben.

    Ich versuch mal andere Ports als PB0 und PB1 bzw. welche wären besser?

Seite 1 von 3 123 LetzteLetzte

Ähnliche Themen

  1. LED D11 Spannung??
    Von HansMeiser86 im Forum Asuro
    Antworten: 8
    Letzter Beitrag: 21.08.2009, 23:54
  2. Takt an Eingang halbieren und an anderem Port augeben
    Von Accenter im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 10
    Letzter Beitrag: 02.09.2008, 17:11
  3. Externen Takt halbieren
    Von zumgwadrad im Forum AVR Hardwarethemen
    Antworten: 11
    Letzter Beitrag: 10.07.2007, 10:05
  4. Antworten: 13
    Letzter Beitrag: 01.02.2007, 10:34
  5. Spannung an JP8 nur 2,4V
    Von Azamir im Forum Schaltungen und Boards der Projektseite Mikrocontroller-Elektronik.de
    Antworten: 1
    Letzter Beitrag: 27.04.2006, 16:23

Stichworte

Berechtigungen

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