電子工程師自制AVR手錶

這是一個非常簡單的項目。如果您認為這個簡單的項目無需學習,那麼,您錯了。我們將通過記錄8MHz內部時鐘引導加載程序來學習如何在沒有外部時鐘的情況下使用ATmega328p-AU芯片。該芯片將在紐扣電池的3.2伏電壓下工作。電池容量比較低,因此我們需要低功耗。

電子工程師自制AVR手錶


第1部分 - 原理圖

使用簡單的EDA創建原理圖。如果你想製作同一個項目,可以在下面找到原理圖。我放置了ATmega328p-AU芯片,LED和電阻,幾個電容和按鈕。原理圖非常簡單。

電子工程師自制AVR手錶

第2部分 - PCB

如您所見,設計很簡單。中間有ATmega芯片,周圍有12個LED,每個LED都有一個200歐姆的電阻來限制電流。我們還有一個帶下拉的按鈕,可以進行控制。在背面,有一個3V的紐扣電池插座的空間和一些用於SPI和UART通信的焊盤。

電子工程師自制AVR手錶

ATmega328芯片必須是全新的芯片才能燒錄8Mhz內部時鐘引導加載程序。

電子工程師自制AVR手錶

然後為每個LED焊接200歐姆電阻。使用了非常非常小的0402尺寸,所以不得不使用焊膏和熱風槍來焊接這個項目的所有組件。現在對於LED來說,訂購了20個紅色0402 LED,但賣家只發給我10個。因此,不得不使用更大的0805尺寸,使用一些焊膏並仔細加熱每個LED,這些元件從下面焊接。焊接按鈕及其下拉電阻,在背面,焊接電池插座,準備燒壞引導加載程序。

3部 - 8MHz內部時鐘Bootloader

為此,使用了Arduino UNO。從Arduino UNO和手錶背面的SPI焊盤進行下面的連接。確保焊接GND和Vcc引腳正確。

電子工程師自制AVR手錶


現在運行Arduino IDE。如果我現在去工具→電路板,我將ATmega328安裝在帶有8MHz內部時鐘板的麵包板上。現在轉到示例→Arduino ISP並打開該示例。將Arduino UNO連接到PC,選擇com並將代碼上傳到Arduino UNO。

現在,轉到工具,再次確保選擇8Mhz板,並將編程器從Arduino AVR ISP更改為Arduino as ISP。再去工具並選擇,燒錄引導加載程序,Arduino的LED將快速閃爍,現在引導加載程序被燒錄到新的ATMEGA芯片。斷開接線,讓我們上傳代碼。為此,您需要一個FTDI編程器或者使用Arduino UNO UART引腳。有以下兩種方法。

電子工程師自制AVR手錶

第4部 - 代碼

將FTDI編程器連接到UART引腳。在Arduino IDE中,將編程器更改回AVR ISP並上傳8MHz內部時鐘板的新代碼,就是這樣。我做了自己的手錶。注意,在DTR引腳和復位引腳之間肯定需要100nF電容才能上傳代碼,因此請確保在上傳之前焊接了100nF電容。

電子工程師自制AVR手錶


void setup() {
//Serial.begin(9600);
PCICR |= B00000111; //enable port C o have interrupts
PCMSK1 |= B00000001; //Set pin D11 (increase button) trigger an interrupt on state change.

power_adc_disable(); // ADC converter
power_spi_disable(); // SPI
power_usart0_disable();// Serial (USART)
//power_timer0_disable();// Timer 0
power_timer1_disable();// Timer 1
power_timer2_disable();// Timer 2
power_twi_disable(); // TWI (I2C)


DDRD = B11111100; //Set pins D2-D7 as outputs
DDRB = B00111111; //Set pins D8-D13 as outputs
pinMode(A0,INPUT);
}

由於為每個LED和每小時或每分鐘做出相同的指令,因此很多程序出現重複。為了降低功耗,禁用了ADC,SPI和UART通信以及定時器1和2,將定時器0激活,因為它將控制時間函數。我使用該功能來計算經過的秒數,分鐘數和小時數。由於ADC被禁用,並且按鈕連接到模擬輸入A0,因此我使用這些寄存器激活了該引腳的中斷。

在中斷向量中,啟用ADC,在完成小時顯示後,將其禁用。每1000毫秒,將秒值增加1。並且每60秒增加分鐘值和每60分鐘增加小時值。

第5部 - 測試

現在測量電池電壓,它是3.47伏。使用芯片的低功耗模式,在該電壓下,電路板消耗大約3.5mA的電流或大約6-7mA的電流。電池容量為320mAh,因此應該持續約90小時接近4天。但是,由於電壓會下降,芯片不能在低於2.7V的電壓下工作,所以說它可以持續2天左右。

電子工程師自制AVR手錶

所以這就是我如何製作這個簡單而小巧的項目。現在知道沒有外部晶體的芯片如何使用,以及如何為低功耗模式添加幾行代碼。我不得不說我也嘗試過超低功耗模式,電流僅為0.8uA,非常低。但是,遺憾的是,在該模式下,計數器和代碼的所有額外部分都無法工作,因此時間值不會增加。


分享到:


相關文章: