2016年5月4日 星期三

[Electric imp] 以PWM控制0~10V 設備

Electric imp 的PWM輸出是0~3.3V,所以如果要控制0~10V設備,

需要有一個放大電路,可以參考這一篇



我嘗試將電壓以電路放大3倍~也就是落在0~9.9V  之間。


Devcie端程式碼


// Assign pin9 to a global variable
led1 <- hardware.pin9;
led2 <- hardware.pin8;
// Configure LED pin for DIGITAL_OUTPUT, and set initial state to off
led1.configure(PWM_OUT, 1.0 / 500.0, 0.0);
led2.configure(PWM_OUT, 1.0 / 500.0, 0.0);
led2.write(0);
led1.write(1);
// Assign a global variable to track current state of LED pin
// Function to blink LED
function setLED1(value) {
    server.log("channel 1 "+value);
    // Set LED pin to new value
    led1.write(value.tofloat());        
}

function setLED2(value) {
    server.log(value);
    // Set LED pin to new value
    server.log("channel 2 "+value.tofloat());
    led2.write(value.tofloat()); 
     server.log("Test "+value.tofloat());
}


// When we get a 'led' message from the agent, call returnFromImp()
agent.on("channel1", setLED1);
agent.on("channel2", setLED2);

將pin9 和 pin8 設定成PWM 輸出,當Device端收到Agent送來的Channel1以及Channel2

數值時(0~1.0),會輸出0~3.3 V ,透過放大電路變成0~9.9V,用來驅動設備。

例如我收到channel1 值為 0.5時,我會輸出1.6 V,透過放大電路變成4.8V。



請注意,您的設備也許需要大電流驅動時,可能需要外加電流放大之類的電路,

也請不要任意拆解不熟悉的硬體,以免有觸電危險。

本範例備為實驗性質,請確實了解設備再進行應用,燒壞了本人不付責。


跟朋友借了一顆美國神燈來試一下,它的輸入是0~10V控制訊號。

小弟做過一些功課,所以知道它的電路特性,請不要任意模仿,它很貴。


沒有留言:

張貼留言