Is it possible when using a sine looup table with the arduino to set a second analog input to control the amplitude or volume of a generated sinewave ?
For the project im working on i realized that i want a second analog input A1 set to change the amplitude/volume of the sinewave(after the inverter and output filters) from zero signal to full output.
This is for a variable frequency drive project to run either brushless dc or induction motors using sinewave commutation and i wish to use furrent feedback from the inverter to control the amplitude of the sinewave as part of a control loop for constant/overcurrent stuff and speed control.
However im not sure if changing the volume (like the volume control on a class d switching pwm audio amplifier) is possible when using a sine lookup table in software without reducing it down from the 256 possible values used.
If i have to use external means of adjusting the level and then comparator ic's to get the PWM back, then there wouldent be much point using a mcu at all, even though generating a three phase sinewave with adjustment capability from dc up to several kHz is almost impossible without a mcu of some kind.
I would prefer not having to use external VCA's like the LM3900, but using some fixed point multiplication or whatever and do the VCA'ing in software so i dont need to repwm the three phase singals after running them through the VCA's.
The thing would be built like this: arduino --> six igbt gate drivers --> three phase igbt bridge --> output filters --> three phase motor.
|_curent feedback circuitry|
So i'd prefer not having it be like this: arduino --> lowpass filter -->Voltage controlled amplifier --> PWM comparator --> gate drive --> igbt bridge --> filters --> motor.
|_current feedback circuitry|
If you create R2R DAC, it would be easy to scale/adjust volume sin wave before it goes out.
All you would need 24 outputs for 3 phase. What board you a waiting?
You are better off either amplifying or attenuating the sine-wave as required, after it's been converted to a analog voltage. Limiting the amplitude in the digital domain will just limit the resolution and quality of the sine wave.
I'm waiting for a Arduino Duemi.. blah i cant spell it with the MEGA328.
I really wanna avoid having to use external analog circuits for the amplitude part since i'd then have to repwm it with takes yet another oscillator for the PWM carrier before i can send it to the inverter.
But it seems like thats the only way to do it without going DSP/FPGA.
Use shift register to convert serial-parallel and get more digital pins.
Scaling down 8-bit to lets say 6-bit ( 50 % ) or 5 - bit ( 25 % ) shouldn't be a problem for electrical motors. I'd expect around 5% THD for 25% output. But if it is a problem, why not build 16-bit R2R, resistors and shift registers are pretty cheap anyway?
So, in general do a math with integer/long , scale down to 16 bit , push out to registors and here you are, less than 1 % THD in worst test case scenario ( very low output)