Main Menu
Menu

Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Show posts Menu

Messages - RoLRoR

#9
เป็นรูปแบบ Operator ในภาษา C ครับ
A = A * B;  สามารถ เขียนแบบ A *= B; ได้ครับ
#10
ผมเองเคยใช้ PIC24 อาจะไม่ใช่เบอร์เดียวกัน เป็นเบอร์ PIC24FJ128GB204
ใช้ PicKit3 จีน. โปรแกรมบน MPLAB สามารถเชื่อมต่อและโปรแกรมได้อยู่นะครับ.
มีบ้างที่ detect ไม่เจอ และโปรแกรมหลุดบ้าง แต่เป็นที่ สายแพคอนเนคเตอร์หลวม
อย่างไรต้องลองไล่วงจร วัดไฟตามจุดต่างๆ ตามพี่ท่านว่าครับ วัดไฟที่ขา ,ต่อ C ,Xtal ,กราวด์ ,...
#12

#include <EEPROM.h>
void EEPROMWriteInt(int p_address, int p_value)
{ byte lowByte  = ((p_value >> 0) & 0xFF);
byte highByte = ((p_value >> 8) & 0xFF);
p_address *= 2;
EEPROM.write((p_address + 0), lowByte);
EEPROM.write((p_address + 1), highByte);
}
unsigned int EEPROMReadInt(int p_address)
{ byte lowByte  = EEPROM.read(p_address + 0);
byte highByte = EEPROM.read(p_address + 1);
return( ((lowByte << 0) & 0xFF) + ((highByte << 8) & 0xFF00) );
}

int tick_state = 0;
int adc_zero = 0;
int adc_val = 0;
int adc_index = 0;
int adc_samp[20] = 0;
double adc_sum;
double adc_rms = 0;
double adc_last;

void setup()
{ Serial.begin(9600); // BAUD 9600,8,N,1
pinMode(2, INPUT); // SWITCH PIN2
adc_zero = EEPROMReadInt(1); // Restore Set.Zero
}

void loop()
{ delay(1); // delay 1ms
if(++tick_state > 1000); tick_state = 0; // state next

//--PushSwitch Store SetZero------------------
if(!digitalRead(2))
{ adc_zero = analogRead(A2);
EEPROMWriteInt(1, adc_zero);
}

if(adc_index < 20) //--Sampling--
{ adc_val = analogRead(A2);
if(adc_val >= adc_zero) adc_samp[adc_index++] = (adc_val - adc_zero);
else adc_samp[adc_index++] = (adc_zero - adc_val);
}
else //--RMS.Process--
{ adc_sum = 0;
for(adc_index=0; adc_index<20; adc_index++)
{ adc_sum += pow(adc_samp[adc_index], 2);
} adc_sum /= 20;
adc_rms = sqrt(adc_sum);
}

//--Display-----------------------------------
if(!(tick_state % 250))
{ adc_rms = (adc_rms + adc_last) / 2;
adc_rms *= cal_value;
Serial.println(adc_rms);
}
}


http://www.electoday.com/index.php/topic,10364.8.html
#13
ขอบคุณครับ. ;D
#14
ตัวอย่าง เพิ่ม inductor และ capacitor ครับ
#16
โค้ดโปรแกรมจากที่นี่ น่าจะใช้ได้ครับ
http://playground.arduino.cc/Main/ACPhaseControl

ตามคู่มือ ET-OPTO AC DIMMER
สัญญาณ Zout(จุดที่12) -> #define DETECT 2  //zero cross detect
และเซ็ตจั้มเปอร์(จุดที่11) เป็น Dw จากโค้ด Pullup ขา DETECT
สัญญาณ Ctrl(จุดที่10) <- #define GATE 9    //triac gate