วันอาทิตย์ที่ 26 สิงหาคม พ.ศ. 2550

Last week 2

ผลที่แสดงออกทาง hyperterminal
This program has 2 mode.
Mode - Load
Read from dataflash to show
1 - 0
2 - 0
3 - 0
.
.
.
148 - 2
149 - 1
150 - 0

**ค่านี้ได้จากการเก็บค่าทุกๆ 5 นาที เริ่มตั้งแต่ 05.58 น. ถึง 18.28 น.

ผลที่ได้จากการวัด คือ ค่าที่อ่านได้จาก ADC ซึ่งสามารถนำมาหาvoltage,power,energy ได้

ทิศตะวันออก,ทิศตะวันตก






ทิศเหนือ,ทิศใต้





เนื่องจากโซ่ล่าเซลล์ที่ใช้ในการทดลองมี voltage สูงสุด 3 volts จึงได้ทำการทดลองหาค่าที่ ADC อ่านได้ จาก 3 volts ว่าเท่าไหร่ ผลปรากฏว่า ถ้าใส่ voltage 3 volts เข้าไป ค่าที่อ่านได้จาก ADC จะมีค่าเท่ากับ 134 จึงได้นำค่าที่อ่านได้จาก ADC มาคิดหา voltage โดยใช้สูตรดังนี้ แรงดันที่วัดได้จากแผงโซล่าเซลล์ = (x/134)*3 โดย x คือค่าที่อ่านได้จาก ADC ต่อมานำแรงดันที่ได้มาคำนวณหา Power โดยใช้สูตร ดังนี้ P = (V^2)/R โดย R = 500 ohms จากนั้นนำ power ที่คิดได้ทั้งหมด ตั้งแต่ 5.58 น. - 18.28 น. (ใช้เวลา 12 ชม. 30 นาที) มาคิดหา Energy จากสูตรดังนี้ E = ผลรวมของPower*t คิดคำนวณเช่นนี้ทั้งสี่ทิศแล้วนำ voltage มา plot graph

สรุปกราฟเปรียบเทียบ voltage ทั้งสี่ทิศ











รูปแสดงการต่อวงจรขณะกำลังวัดการทำงาน
วิเคราะห์ผลการทดลอง
ทิศตะวันออกได้ผลรวมของ power = 0.754687792 watt เวลาทั้งหมด 12.30 ชม. ดังนั้น Energy = 33,960.95066 จูล
ทิศตะวันตก ผลรวมของ power = 0.835174538 watt ดังนั้น E = 37,582.8542 จูล
ทิศเหนือ ผลรวมของ power = 0.318205836 ดังนั้น E = 14,139.26264 จูล
ทิศใต้ ผลรวมของ power = 0.402569058 ดังนั้น E = 18,115.6076 จูล
จะเห็นได้ว่า ทิศตะวันตกให้ Energy มากที่สุด รองลงมาคือ ทิศตะวันออก และทิศเหนือ ทิศใต้ ตามลำดับ
สรุปผลการทดลอง
จากการทดลอง จะเห็นได้ว่าแม้ทิศตะวันตกจะมีค่าพลังงานมากที่สุด ก็มีค่าพลังงานแค่ 37,582 จูล เท่านั้น ถึงแม้จะเพิ่มขนาดของแผ่น solar cell เพื่อให้ได้พลังงานเพิ่มขึ้น ก็จะทำให้ต้นทุนสูงขึ้น และในแต่ละช่วงเวลาก็อาจจะมีเมฆหรือมีแสงไม่เพียงพอ ทำให้ไม่สามารถรับแสงได้ ถ้าในบ้านหลังหนึ่งๆจะใช้แต่พลังงานแสงอาทิตย์ ในเวลาอันใกล้นี้คงเป็นไปไม่ได้ ถ้าจะใช้พลังงานแสงอาทิตย์จริงๆคงต้องพัฒนาแผง solar cell ให้มีประสิทธิภาพดียิ่งขึ้น ซึ่งการทดลองนี้ก็ทำให้ทราบว่าควรเลือกใช้แผงโซล่าเซลล์ในทิศที่ให้พลังงานมากที่สุด นั่นคือทิศตะวันตก โดยภายใต้เงื่อนไขที่ว่า " แผงโซล่าเซลล์ที่ติดตั้งภายในอาคาร " แต่ถ้าจะติดตั้งแผงโซล่าเซลล์บนดาดฟ้า จะต้องทำการศึกษาและทดลองต่อไป
**แผงโซล่าเซลล์จึงควรใช้กับอุปกรณ์อิเลคทรอนิคส์ที่มีขนาดเล็กที่ใช้แรงดันไฟฟ้าต่ำ จำพวกอุปกรณ์ที่ไม่ต้องใช้งานตลอดเวลา เช่น รีโมทย์ นาฬิกา เป็นต้น

Last WeeK

โปรแกรมภาษาซีที่ใช้โปรแกรมลงบอร์ด
int main(void)
{
unsigned int adcval;
char readin[] = {'0','0','0','0','\0'};
char readout[] = {'0','0','0','0','\0'};
char key = KEY_NULL;
unsigned int Page=0x000, InAdPage,InPageAd,count,no;
int i,z=1,j;
Initialization();

printw("This program has 2 mode.\n\r");
while(1)
{ while (key == KEY_NULL) {
key = getkey();
Delay(100);
}
if(key==KEY_MINUS)
{ z=1;
printw("Mode - SAVE\n\r");
lcd_str("save");
}else if(key==KEY_PLUS){
z=0;
printw("Mode - LOAD\n\r");
lcd_str("load");
}else if(key==KEY_ENTER) { key = KEY_NULL; break;}
key = KEY_NULL;
}
while(1)

{
if(z==1)
{ printw("GET ADC and write to dataflash\n\r");
Page=0x000,InAdPage=0x00;
Page_Erase(Page);
while(1)
{ no=1;
for(Page=0x000; Page<=0x003; Page++)
{
Page_Erase(Page);
InAdPage=0x00;
for(j=1;j<=50;j++)
{
ADC_init(1);
adcval = ADC_read();
itoa(no,readout,10);
printw(readout);
printw(" - ");
itoa(adcval,readout,10);
printw(readout);
printw("\n\r");
Buffer_Write_Enable(1,InAdPage);
count=0;
for(i=0; i<5;>
{
Buffer_Write_Byte(1,InAdPage + i,readout[i]);
count++;
if(readout[i]=='\0') break;
}
InAdPage = InAdPage + count;
Delay(50000);
Delay(50000);
Delay(50000);
Delay(50000);
Delay(50000);
Delay(50000);
Delay(50000);
Delay(50000);
Delay(50000);
Delay(26100);
no++;
}
Buffer_To_Page(1,Page);
}
itoa(Page,readout,10);
lcd_str(readout);
if (Page>0x003)
{ z=2; lcd_str("finish");
break; }
}
}
if(z==0)
{
printw("Read from dataflash to show\n\r");
Page=0x000,InPageAd=0x00;
while(1)
{ no=1;
for(Page=0x000; Page<=0x003; Page++)
{ InPageAd = 0x00;
for(j=1; j<=50; j++)

{
Cont_Flash_Read_Enable(Page,InPageAd);
count=0;
itoa(no,readout,10);
printw(readout); printw(" - ");
for(i=0; i<5;>
{
Page_To_Buffer(Page,1);
readin[i] = Buffer_Read_Byte(1,InPageAd+i);
count++;
if(readin[i]=='\0') break;
Usart_Tx(readin[i]);
}
InPageAd = InPageAd + count;
printw("\n\r");
Delay(500);
no++; }
}
if(Page>0x003) {
z=2;
lcd_str("complete"); break;} }
} }
return 0;}


การใช้งาน


โปรแกรมจะมีการใช้งานอยู่ 2 mode คือ save และ load
1. save คือการบันทึกข้อมูลลงใน dataflash เมื่อกด save แล้ว โปรแกรมจะบันทึกค่า volt ที่ได้มาทุกๆ 5 นาที จนครบ 200 ค่าและจะขึ้นว่า "finish"
2. load คือการนำค่าออกจาก dataflash มาขึ้นบนจอLCD เมื่อค่าที่เก็บแสดงครบแล้วจะขึ้นคำว่า "complete"
**โปรแกรมนี้จะเก็บค่าลง dataflash เมื่อมีค่าเก็บครบ 50 ค่า


สถานที่เก็บข้อมูล( ตึกวิจัย)


ทิศตะวันออก


ทิศตะวันตก



ทิศใต้





ทิศเหนือ



วันอาทิตย์ที่ 19 สิงหาคม พ.ศ. 2550

Week 3

Flash memory
flash memory เป็นพื้นที่หน่วยความจำสำหรับเก็บ program ที่เราเขียนขึ้น ซึ่งมีขนาด 1024 words ถึงแม้ว่าจะไม่มีไฟฟ้าจ่ายให้กับ MCU ข้อมูลที่เก็บอยู่ใน flash memory ก็จะไม่หายไป จุดเด่นของ flash memory ก็คือสามารถเขียนทับเข้าไปใหม่ได้หลายๆ ครั้ง ซึ่งจำนวนครั้งจะอยู่ที่ประมาณ 1000 ครั้ง จากรูป ในตัวของ flash memory 1 ตัว จะมี buffer อยู่สองตัว บัฟเฟอร์ทั้งสองตัวนี้จะทำหน้าที่เหมือนกันคือ เก็บข้อมูล และ รับข้อมูล แต่จะทำงานสลับกันคือ ถ้าตัวหนึ่งรับ อีกตัวหนึ่งจะเก็บ

โครงร่าง PIN

code การอ่านข้อมูล adc ที่ใช้

#if EN_LOG_BATTERY
ADC_init(VOLTAGE_SENSOR); // set up adc
log_data=ADC_read(); // read adc
DF_write_int(log_data);
#endif

gDataPosition++;
//transfer to DataFlash if the page is full
if (gDataPosition==RECORDSPERPAGE){
Buffer_To_Page (1,gDataPage);
gDataPosition=0;
gDataPage++;
//Check for Flash Rollover
if(gDataPage==TOTALPAGESINFLASH){
gRolloverFlash++; // dump entire flash from now on.
gDataPage=0; // reset to page 0;
}
}
DF_CS_inactive;
if (cbdisable){
ADMUX=adcv;
Timer0_RegisterCallbackFunction(ADC_periphery);
}
gLogNow=FALSE; // clear flag

วันเสาร์ที่ 11 สิงหาคม พ.ศ. 2550

WeeK 2

การโปรแกรมเข้าบอร์ด ก่อนอื่นเราต้องรู้จักการต่อเข้ากับคอมพิวเตอร์ก่อน จะมีอยู่สองแบบด้วยกัน คือ
1. การต่อแบบ series จะใช้การshot ขาที่ ISP และใช้ตัวสาย series ต่อจาก J406 เข้าพอร์ดคอมพิวเตอร์ได้เลย ส่วนโปรแกรมที่ใช้ในการ โปรแกรมจะใช้ AVR Studio 4 สามารถนำ ภาษาซีที่เขียนมา compile ให้เป็น .hex แล้วนำเข้าบอร์ดได้เลย
2. การต่อแบบ parallel จะใช้อุปกรณ์อีกตัวนึงคือ external power โดยในการต่อจะต่อเข้ากับ avr butterfly โดยใช้สายต่อที่เปลี่ยนจาก หกขาเป็นแปดขา และขั้วของ external power จะเป็นพอร์ต printer เราสามารถนำสายที่เปลี่ยนตากพอร์ตปริ้นเตอร์มาเป็น usb เพื่อความสะดวกในการทำงาน ในส่วนโปรแกรมที่ใช้downloadเข้าบอร์ด จะใช้เป็น ponyprog แต่ในการโปรแกรมเข้าต้องเปลี่ยนเป็น .hex อยู่ดี ซึ่งต้องใช้โปรแกรม avr studio 4 เพื่อเปลี่ยนเป็น .hex file ก่อน แล้ว save ไว้ เปิดโปรแกรม ponyprog เปิด file .hex ที่เซพไว้ และไปที่ command >> program ก็จะสามารถ download file เข้าไปในบอร์ดในทันที

การเชคโปรแกรมเมื่อโปรแกรมเรียบร้อยแล้ว
กด start>>program>>accessories>>communication>>Hyperterminal โปรแกรมนี้เป็นโปรแกรมที่ไว้เชคการใส่โปรแกรมไปในภาษาซี เช่น เมื่อ เราโปรแกรมไว้ว่า เมื่อกดซ้าย จะขึ้นว่า bio ในหน้าจอของโปรแกรมนี้ก็จะขึ้นให้เห็นว่า bio

วันอาทิตย์ที่ 5 สิงหาคม พ.ศ. 2550

ความเข้มแสง



จุดประสงค์

เพื่อศึกษาความเข้มแสงของแผงโซล่าเซลล์ในอาคารทั้งสี่ทิศทาง และนำมาประเมินประสิทธิภาพ

การต่อวงจรและการทำงานของอุปกรณ์
อิเลคทรอนิกส์แต่ละตัว

1. External Power กับ AVR Butterfly สายสีแดง(+)ของ external power ต่อเข้ากับ VCC ของ PORTD และสายสีดำ(-) ของ external power ต่อเข้ากับ GND ของ PORTD
2. ET-AVR ISP กับ AVR Butterfly ซึ่งระหว่างตัวAVR butterfly(6ขา) และ ET-AVR ISP (10 ขา) มีจำนวนขาไม่เท่ากัน จึงจำเป็นต้องใช้สายเชื่อมให้เท่ากัน โดยนำสายสีชมพูของสายเชื่อมซึ่งเป็นสาย 1 ต่อเข้ากับ pin 1 ของ ET-AVR ISP และอีกด้านนึงของตัวเชื่อมโดยก่อนที่จะเข้า AVR Butterfly pin 9 จะเปลี่ยนเป็นpin 1 และนำไปเสียบใน pin 1 ของ AVR Butterfly
3. แผงโซล่าเซลล์ กับ AVR Butterfly ต่อแผงโซล่าเซลล์เข้ากับ port ADC ของ AVR Butterfly โดยที่ขั้วบวกของแผงโซล่าเซลล์ต่อกับpin 1(+)ของ AVR Butterfly และขั้วลบ ต่อเข้ากับ pin 2(-) โดยต่อตัวต้านทานคร่อมระหว่างสายขั้วบวกและลบ

สถานที่เก็บข้อมูล
ตึกวิจัยโดยจะจัดเก็บข้อมูลภายในตัวอาคารทั้งสี่ทิศ