Re: 程式是這樣要把ADC的轉換值用USART輸出可是最大值是1024正確最小值卻不是0該怎麼修改
|
||||
---|---|---|---|---|
新會員
|
使用的是PIC16F1825
發表於: 7/11 16:26
|
|||
|
Re: PIC16F15313 zcd issue
|
||||
---|---|---|---|---|
管理員
|
Hi,
根據您所提供的波形圖,ZCD輸出波形的高低電位寬度不對稱,而Delay約為900微秒。 除了嘗試增加上拉或下拉電阻之外,建議您也可以嘗試調整RC時間常數來降低串聯電阻和電容的數值,以此減少RC時間常數來降低延遲。 使用AC Coupling ZCD的方式電阻和電容的串聯會形成一個高通濾波器。這個濾波器的截止頻率可能會因此影響訊號的相位導致ZCD出現延遲。
發表於: 7/11 9:49
|
|||
|
程式是這樣要把ADC的轉換值用USART輸出可是最大值是1024正確最小值卻不是0該怎麼修改
|
||||
---|---|---|---|---|
新會員
|
#include "mcc_generated_files/system/system.h"
#include #include #define _XTAL_FREQ 8000000 #define BAUDRATE 9600 #define MY_UBRR ((_XTAL_FREQ / 16 / BAUDRATE) - 1) // Function to initialize UART void UART_Init() { SPBRG = MY_UBRR; TXSTAbits.TX9 = 0; // 8-bit transmission TXSTAbits.TXEN = 1; // Enable transmitter TXSTAbits.SYNC = 0; // Asynchronous mode TXSTAbits.BRGH = 1; // High-speed mode RCSTAbits.SPEN = 1; // Enable serial port RCSTAbits.CREN = 1; // Enable continuous reception } // Function to transmit a single character via UART void uart_transmit(char data) { while (!TXSTAbits.TRMT); // Wait for buffer to be empty TXREG = data; // Transmit data } // Function to transmit a string via UART void uart_transmit_string(const char* str) { while (*str != '\0') { uart_transmit(*str++); } } // Function to initialize ADC void initADC(void) { ADCON0 = 0b00001001; // Select AN2 (CHS = 00010), enable ADC (ADON = 1) ADCON1 = 0b10010000; // Right justify result, Fosc/8 as ADC clock ADCON0bits.GO_nDONE = 1; // Start A/D conversion } // Function to read ADC value unsigned int readADC(void) { ADCON0bits.GO_nDONE = 1; // Start conversion while (ADCON0bits.GO_nDONE); // Wait for conversion to complete return ((ADRESH << 8) | ADRESL); // Return 10-bit result } // Function to convert integer to string void itoa(unsigned int value, char* buffer) { sprintf(buffer, "%u", value); } // Main function int main(void) { SYSTEM_Initialize(); UART_Init(); initADC(); char adcBuffer[6]; // Buffer to hold ADC value as string while (1) { // Read ADC value unsigned int adcValue = readADC(); // Convert ADC value to string itoa(adcValue, adcBuffer); // Transmit ADC value uart_transmit_string(adcBuffer); uart_transmit('\n'); // Newline for readability uart_transmit('\r'); __delay_ms(1000); // Delay before next reading } }
發表於: 7/9 10:13
|
|||
|
Re: PIC16F15313 zcd issue
|
||||
---|---|---|---|---|
資深會員
|
附上waveform
發表於: 7/4 9:21
|
|||
|
Re: PIC16F15313 zcd issue
|
||||
---|---|---|---|---|
資深會員
|
我將電路改為ac coupling zcd的方式, 計算出串聯電阻1Meg,串聯電容0.1uF,
這樣的方式可以動作,但是ZCD Cross的點是錯誤的,Delay約是900us, 如果按照正確的波形來看,ZCD的OUTPUT輸出High與low應該各是一樣的波形寬度,但是我的波形是high與low差異很大,想請問用pullup電阻或pulldown電阻能夠改善嗎?
發表於: 7/3 11:56
|
|||
|
PIC16F15313 zcd issue
|
||||
---|---|---|---|---|
資深會員
|
目前使用PIC16F15313,前一版使用組容式降壓式可以偵測zcd的,但由於硬體修改,改為橋式整流後經過電阻與積納二極體降壓到5v,但未注意到橋式整流後MCU的VSS是接到橋式整流的-,導致目前ZCD由ACL-->電阻-->ZCD無法再0.75V做CROSS,不知道是否有方法可以將ZCD應用在這樣的情況呢?
發表於: 7/2 17:12
|
|||
|
Re: PICkit4與PICkit5的差異?ProgrammerToGo 燒錄檔可互用嗎?
|
||||
---|---|---|---|---|
資深會員
|
感謝!您的說明很有幫助。
在使用PICkit4做ProgrammerToGo時就覺得如果可以一直儲存多組燒錄檔該有多好,沒想到 PICkit5就做到了。 這對要外出更新的人來說很有用!!
發表於: 7/2 10:49
|
|||
我相信解決問題的方法不只一種,所以我在回答同好的問題時或者提出與主題不同的方案,
請不要以此做為攻擊的目標,畢竟我也只是想和大家討論如何解決問題而已… 解決問題最重要,..... |
||||
|
Re: PICkit4與PICkit5的差異?ProgrammerToGo 燒錄檔可互用嗎?
|
||||
---|---|---|---|---|
管理員
|
Hi 您好,
首先,PICkit5 的 Programmer-to-Go (PTG) 燒錄檔可以給PICkit4用。 以下為Pickit5 與 Pickit4 主要的差異: - 可在 SD卡上儲存多個檔案並選擇進行燒錄 - 可以透過藍芽連到手機APP來選擇要燒錄的PTG檔 - 使用Type-C 連接
發表於: 7/2 10:41
|
|||
|
PICkit4與PICkit5的差異?ProgrammerToGo 燒錄檔可互用嗎?
|
||||
---|---|---|---|---|
資深會員
|
請問 PICkit4與PICkit5 會差很多嗎?因為從外觀上看差不多。
客戶是用PICkit4,因為我們有做 ProgrammerToGo 燒錄檔的需求(做好直接給客戶自己用PICkit4燒錄),現在我們公司要買一個PICkit5, 但是不知道用PICkit5做的 ProgrammerToGo 燒錄檔可以給PICkit4用嗎? 以上,感謝。
發表於: 7/2 9:13
|
|||
我相信解決問題的方法不只一種,所以我在回答同好的問題時或者提出與主題不同的方案,
請不要以此做為攻擊的目標,畢竟我也只是想和大家討論如何解決問題而已… 解決問題最重要,..... |
||||
|