controle a PWM output in Arduino using LabView

controle a PWM output in Arduino using LabView



What is PWM ?


Pulse Width Modulation, or PWM, is a technique for getting analog results with digital means. Digital control is used to create a square wave, a signal switched between on and off. This on-off pattern can simulate voltages in between full on (5 Volts) and off (0 Volts) by changing the portion of the time the signal spends on versus the time that the signal spends off. The duration of "on time" is called the pulse width. To get varying analog values, you change, or modulate, that pulse width. If you repeat this on-off pattern fast enough with an LED for example, the result is as if the signal is a steady voltage between 0 and 5v controlling the brightness of the LED.





so to create a PWM signal using arduino you just have to write this line :
analogWrite(Pin, nb);
Pin : is the PWM output
nb is a number between [0 , 255] to determin the Duty cycle

now how to control it from labview , you need to to send the Duty Cycle from labeview to arduino and then command the PWM output 

to open Serial port in arduino we need to write this line :
Serial.begin(9600);
to read from Serial port :


                                                                  while (Serial.available() > 0) 
                                                                  {
                                                                  int inChar = Serial.read();
                                                                   }
the arduino full code is :








///////////////////////////////////////////////////////////////////////////////////////////////
// pins for the LEDs:
const int Pin = 6;



void setup() {

// initialize serial:

Serial.begin(9600);

// make the pins outputs:


pinMode(Pin, OUTPUT);
digitalWrite(6,1);
delay(1000);
digitalWrite(6,0);
}

String inString = "";

void loop() {

// if there's any serial available, read it:

while (Serial.available() > 0) {
int inChar = Serial.read();
if (isDigit(inChar)) {
// convert the incoming byte to a char and add it to the string:
inString += (char)inChar;
}
// if you get a newline, print the string, then the string's value:
if (inChar == '\n') {
int nb = inString.toInt();
analogWrite(Pin, nb);
// clear the string for new input:
inString = "";
}
}
}
///////////////////////////////////////////////////////////////////////////////////////////////////////


now for the labview part :


this Vi containes how to send data using Serial  , the main idea is to generate a number between [0,255] then convert it to a string , then send it using visa
this operation is in a while loop so i can control the PWM output in real time











Commentaires

Posts les plus consultés de ce blog

temperature and humidity supervision System

CORDIC Algorithm