DRV8833 und Arduino

Hallo,

bin dabei eine Motorsteuerung mit den DRV8833 zu bauen und einen Arduino Uno.
Der Arduino soll über die PWM Pins des Motor in der Drehzal regeln können.
Die Programmierung und den Aufbau der Schaltung habe ich soweit fertig, jedoch wird mein Motor nur mit 3,6V versorgt, obwohl ich an den Pin 12 (Vm) des DRV8833 eine Versorgungsspannung von 10V angelegt habe.

Hat sich jemand schonmal mit den DRV8833 befasst und kennt eine Lösunge für mein Problem?

MfG Marvin

Ich würde mal sagen keine 10 Volt , sondern die Spannung anlegen die der Motor braucht. Der Regler nimmt ja 2,7 bis 10 Volt.

Bitte Schaltplan, Foto und Sketch.
Und bitte lies Dir Deinen Text vor dem Abschicken nochmal durch.
Grüße Uwe

@Franz54

Da ich gerne den Motor in der Drehzahl steuern würde hätte ich gerne eine Spannung von 10V an den Motortreiber am Pin 12 (VM, Device power supply) angeschlossen und diesen mittels PWM über den Motortreiber geregelt.
Jedoch hat mein Motor die gleiche Geschwindigkeit, wie wenn ich den Motortreiber am Pin12 mit 5V versorgen würde.

@uwefed
Hier den Probesketch zum testen des Motortreibers

//Konstenaten
const int  TasterModus = 3;         
const int  Starttaster = 4;        

const int  LEDrueckmedlung = 2;    
const int  LEDmanuell = 5;         
const int  LEDautomatik = 6;       

int  potPin = A0;                  
int LEDPWM1 = 10;                   
int LEDPWM2 = 11;                   

//Variablen für den TasterModus:
uint8_t tasterStatusModus = LOW;       
uint8_t tasterGedruecktModus = 0;      
uint8_t tastenDruckModus = 0;          
uint8_t EntprellzeitModus = 200;       
unsigned long tasterZeitModus = 0;     

//Variablen für den TasterStarten:
uint8_t tasterStatusStarten = LOW;       
uint8_t tasterGedruecktStarten = 0;      
uint8_t tastenDruckStarten = 0;          
uint8_t EntprellzeitStarten = 200;       
unsigned long tasterZeitStarten = 0;     


//Variablen für das Poti:
int Potiwert;                   
int PwmWert;                   
int Helligkeit;                  

//Variablen für die verschiedenen Betriebsarten
boolean Manuell;                 
boolean Automatik;               


//Variablen für die Pause des Automatikptogramms
int ledState = LOW;                  
unsigned long previousMillis = 0;    
unsigned long previousMillis2 = 0;  
long OnTime = 20000;                  
long OffTime = 5000;                 



void setup() {

  pinMode(LEDrueckmedlung, OUTPUT);
  pinMode(LEDmanuell, OUTPUT);
  pinMode(LEDautomatik, OUTPUT);
  pinMode(LEDPWM1, OUTPUT);
  pinMode(LEDPWM2, OUTPUT);

  pinMode(TasterModus, INPUT);
  pinMode(Starttaster, INPUT);



}

void loop() {


  TasterabfrageBetriebsarten();
  TasterabfrageStarten();
  Ruckmeldung();
  Manuellbetrieb();
  Automatikbetrieb();


}



void TasterabfrageBetriebsarten() {

  tasterStatusModus = digitalRead(TasterModus);

  if (tasterStatusModus == LOW) {

    tasterZeitModus = millis();      
    tasterGedruecktModus = 1;       
  }

  //Wenn die Entprellzeit vergangen ist und der Taster gedrückt wurde
  if ((millis() - tasterZeitModus > EntprellzeitModus) && tasterGedruecktModus == 1) {

    tastenDruckModus++;               
    tasterGedruecktModus = 0;         
  }
  if (tastenDruckModus == 2) {
   tastenDruckModus = 0;
  }
}



void TasterabfrageStarten() {

  tasterStatusStarten = digitalRead(Starttaster);

  if (tasterStatusStarten == LOW) {

    tasterZeitStarten = millis();         
    tasterGedruecktStarten = 1;           
  }

  if ((millis() - tasterZeitStarten > EntprellzeitStarten) && tasterGedruecktStarten == 1) {

    tastenDruckStarten = 1;                 
    tasterGedruecktStarten = 0;            

  }
}




void Ruckmeldung() {

  if (tasterStatusModus == LOW) {

    digitalWrite(LEDrueckmedlung, HIGH);

  }
  else {

    digitalWrite(LEDrueckmedlung, LOW);

  }
}


void Manuellbetrieb() {

  if (tastenDruckModus == 0) {                 
    Manuell = true;
    Automatik = false;
    digitalWrite(LEDmanuell, HIGH);      
  }

  if (Manuell == true) {

    digitalWrite(LEDautomatik, LOW);          

    Potiwert = analogRead(potPin);            
    PwmWert = (255. / 1023.) * Potiwert;      

  }

  if (PwmWert == 127 ) {

    analogWrite(LEDPWM1, 0);            
    Helligkeit = PwmWert;

  }

  if (PwmWert >= 140) {

    analogWrite(LEDPWM1, (PwmWert - Helligkeit));            
  }

  if (PwmWert <= 110) {


    analogWrite(LEDPWM1, PwmWert);             

  }
}

void Automatikbetrieb() {

  if (tastenDruckModus == 1) {
    Manuell = false;
    Automatik = true;
    PwmWert = 0;
    Helligkeit = 0;

    digitalWrite(LEDautomatik, HIGH);       
    //ROTE LED AUF DEM STECKBRETT
    digitalWrite(LEDmanuell, LOW);           

  }

  if ((Automatik) && tastenDruckStarten == 1) {


    unsigned long currentMillis = millis();

    //WENN DIE AUSSCHALTZEIT VERGANGEN IST WIRD DIE LED EINGESCHALTET
    if (currentMillis - previousMillis >= OffTime)
    {

      previousMillis = currentMillis;   // Remember the time
      digitalWrite(LEDPWM2, HIGH);    // Update the actual LED

    }

    unsigned long currentMillis2 = millis();

    //WENN DIE AUSSCHALTZEIT VERGANGEN IST WIRD DIE LED AUSGESCHALTET
    if (currentMillis2 - previousMillis2 >= OnTime)
    {

      previousMillis2 = currentMillis2;   // Remember the time
      digitalWrite(LEDPWM2, LOW);    // Update the actual LED
      tastenDruckStarten = 0;
      
    }
 }
}

und hier mein Schaltplan

Hallo,

hat jemand schon eine Lösung für mein Problem gefunden.
Sprich wenn ich am Pin 12(VM) des DRV8833 10V anschließe dreht sich der Motor noch immer mit der gleichen Geschwindigkeit, wie wenn ich am VINT - Pin 5V anschließe und das kann ja eigentlich nicht richtig sein oder?

Wäre nett, wenn mir jemand weiter helfen könnte.

MFG Marvin