PCA9685 16 Channel PWM Servo Motor Driver I2C Module

kr.60.00 inkl. moms

PCA9685 16 Channel PWM Servo Motor Driver I2C Module.

På lager

Varenummer (SKU): 8624 Kategori: Tags: , , , , , , ,

PCA9685 16 Channel PWM Servo Motor Driver I2C Module kan lave et kunstværk med tonsvis af bevægelige dele, eller skal du køre et ton LED’er med præcis PWM-output. Din mikrocontroller har et begrænset antal PWM- udgange, og du oplever, at du løber tør! Ikke med Adafruit 16-Channel 12-bit PWM/Servo Driver – I2C interface. Med denne pwm og servo driver breakout kan du styre 16 fritløbende PWM udgange med kun to ben! Har du brug for at køre mere end 16 PWM-udgange? Intet problem. Kæd op til 62 af disse skønheder sammen for op til enestående 992 PWM-udgange.

Tekniske detaljer:

25 MHz typical internal oscillator requires no external components
External 50 MHz (max.) clock input
Internal power-on reset
Noise filter on SDA/SCL inputs
Edge rate control on outputs
No output glitches on power-up
Supports hot insertion
Low standby current
Frequency: 40-1000Hz.
Channel number: 16 channel.
Resolution: 12 bit.
Working Voltage: 2.3 V ~ 5.5 V
Working Temperature: -40 C ~ 85 C
Dimensions: 62.5MM X 25.4MM
Driver IC: PCA9685-Adafruit-Library

Installere PCA9685 Adafruit Library

  • Download library (Download)
  • Åben Arduino IDE software og klik på “Sketch/Include library”
  • Klik nu på “Add Zip. library” og find Zip filen du lige har downloaded.
  • Luk, og åben Arduino IDE programmet. (Genstart programmet)
  • Nu er library installeret.
  • Library kan også downloades direkte i Arduino IDE find den her: “Sketch/Include library/Manage library/PCA9685 – by Peter Polidoro”
    Info: Modulet er testet med Adafruit PCA9685 Library.

Eksempel

Her vises et eksempel på hvordan servomotoren drejer i step fra 0 grader til 180 grader og fra 180 grader og til 0 grader igen.

Displayet har en I2C adresse, den skal findes før displayet kan vise noget. Adressen indsættes i koden som vises længere mede.

Du skal bruge:

Forbind det sådan:

V+ (Modul) – 5V (Arduino)
VCC (Modul) – V+ (Modul)
GND (Modul) – GND (Arduino)
GND (Modul) – GND (Arduino)
SCL (Modul) – SCL (Arduino)
SDA (Modul) – SDA (Arduino)

Ved flere servo motorer anbefaler vi at køre med en ekstern strømkilde på 5 volt.

kode: (I2C Scanner)

#include <Wire.h> 
 
void setup()
{
  Wire.begin();
 
  Serial.begin(9600);
  while (!Serial);             //  wait for serial monitor
  Serial.println("nI2C Scanner");
}
 
 
void loop()
{
  byte error, address;
  int nDevices;
 
  Serial.println("Scanning...");
 
  nDevices = 0;
  for(address = 1; address < 127; address++ )
  {
    // The i2c_scanner uses the return value of
    // the Write.endTransmisstion to see if
    // a device did acknowledge to the address.
    Wire.beginTransmission(address);
    error = Wire.endTransmission();
 
    if (error == 0)
    {
      Serial.print("I2C device found at address 0x");
      if (address<16)
        Serial.print("0");
      Serial.print(address,HEX);
      Serial.println("  !");
 
      nDevices++;
    }
    else if (error==4)
    {
      Serial.print("Unknown error at address 0x");
      if (address<16)
        Serial.print("0");
      Serial.println(address,HEX);
    }    
  }
  if (nDevices == 0)
    Serial.println("No I2C devices foundn");
  else
    Serial.println("donen");
 
  delay(5000);           // wait 5 seconds for next scan
}

 

Kode:

Nu har jeg fundet adressen på displayet. Min er “0x3C”

#include <Wire.h>
#include <Adafruit_PWMServoDriver.h>

// called this way, it uses the default address 0x3C
Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver();
// you can also call it with a different address you want
//Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver(0x3C);

// Depending on your servo make, the pulse width min and max may vary, you 
// want these to be as small/large as possible without hitting the hard stop
// for max range. You'll have to tweak them as necessary to match the servos you
// have!
// Watch video V1 to understand the two lines below: http://youtu.be/y8X9X10Tn1k
#define SERVOMIN 125 // this is the 'minimum' pulse length count (out of 4096)
#define SERVOMAX 575 // this is the 'maximum' pulse length count (out of 4096)

// our servo # counter
uint8_t servonum = 0;

void setup() {
Serial.begin(9600);
Serial.println("16 channel Servo test!");

pwm.begin();

pwm.setPWMFreq(60); // Analog servos run at ~60 Hz updates

//yield();
}

// the code inside loop() has been updated by Robojax
void loop() {

//watch video for details: https://youtu.be/bal2STaoQ1M
for( int angle =0; angle<181; angle +=10){
delay(50);
for(int i=0; i<16; i++)
{ 
pwm.setPWM(i, 0, angleToPulse(angle) );
}
}



// robojax PCA9865 16 channel Servo control
delay(1000);

}

/*
* angleToPulse(int ang)
* gets angle in degree and returns the pulse width
* also prints the value on seial monitor
* written by Ahmad Shamshiri for Robojax, Robojax.com
*/
int angleToPulse(int ang){
int pulse = map(ang,0, 180, SERVOMIN,SERVOMAX);// map angle of 0 to 180 to Servo min and Servo max 
Serial.print("Angle: ");Serial.print(ang);
Serial.print(" pulse: ");Serial.println(pulse);
return pulse;
}

Kontakt os

Du er altid velkommen til at kontakte os på info@ardustore.dk, eller sende os en besked via messenger (Klik her) og vi vil hjælpe dig.

Anmeldelser

Der er endnu ikke nogle anmeldelser.

Vær den første til at anmelde “PCA9685 16 Channel PWM Servo Motor Driver I2C Module”

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *