Go Down

### Topic: Fully Rectified Sine Wave With PWM (Read 1 time)previous topic - next topic

#### QAMember

##### Apr 03, 2013, 03:41 pm
I need to create a sine wave function through the PWM pins where the sine wave is pointy at the crests and 2 times wide at the bottom. I'm guessing a function which emulates the full rectification of a sine wave would be the way to go. Here is some of the current code I am using:

void loop() {
float a = 128.0;
float b = 128.0;
float c = 28000.0;
float d = 2.0;
float e = 18.3;    //offset
{
int value = a + b * sin((millis()/c) * d * PI );
analogWrite(2,value);
}

#### semicolo

#1
##### Apr 03, 2013, 05:45 pm
If you want to rectify a sinus you have to use abs(sin...)
in your case -abs since you want to invert it.

#### semicolo

#2
##### Apr 03, 2013, 05:58 pm
With the help of my old ti85:

Code: [Select]
`  float a = 255.0;  float b = 255.0;  float c = 28000.0;  float d = 2.0;void loop() {{  int value = a - b * abs(sin(d*PI*millis()/c));  analogWrite(2,value);}`

You'll get a full intervall each 14s

#### GoForSmoke

#3
##### Apr 04, 2013, 01:39 am

I need to create a sine wave function through the PWM pins where the sine wave is pointy at the crests and 2 times wide at the bottom. I'm guessing a function which emulates the full rectification of a sine wave would be the way to go. Here is some of the current code I am using:

void loop() {
float a = 128.0;
float b = 128.0;
float c = 28000.0;
float d = 2.0;
float e = 18.3;    //offset
{
int value = a + b * sin((millis()/c) * d * PI );
analogWrite(2,value);
}

You could put a tiny capacitor across the pin and ground. That would slant leading and trailing edges.

PWM is about changing the duty cycle.