この車両の全体の充填の主な欠点は、車両の後ろと車両の内部に温度センサーがないことです。 彼らは、非標準的な方法を使用して通常のバックミラーを変更することにより、同僚とこの欠点を変えることにしました。
それでは、ミラーの「パッチ」の作成を始めましょう。
問題の声明。 車内では、外部周囲温度とキャビン内の温度に関する情報を受信する必要があります。 制限として、追加の
ソースデータの分析。 すべてのビジネスはソースデータの分析から始まるため、ミラーの解体とその分析から始めます。 鏡の外観から判断すると、それぞれ4文字の2つの7セグメントLEDインジケーターがあります。つまり、それらに到達するか、独自の何かを思いつくことができます。
一般に、高度計、気圧計、およびコンパスの機能の実装は、測定値が大きく浮動し、値が100の倍数であり、コンパスが既知の方法で較正されていないため、ミラーではかなりうんざりすることに注意する価値があります。 したがって、これらの関数はときどき捨てられる可能性があります。 さらに、単一の気圧センサーで高さと圧力を同時に測定することは、許容できる精度では不可能であることが知られています。 高さが変化する場合、センサーは高さのみを測定し、静止している場合は大気圧のみを測定します。 楽器の測定値から判断すると、ミラーにはコンパスと気圧センサーが1つずつあるという感覚が得られます。
鏡の中にそのようなボードがあります:
そのため、剖検の結果、ミラー内にボードがあり、TM1638ドライバーがLEDインジケーターを制御するためにインストールされており、ロジックがMPC82E54AS2コントローラーに配線されています。 MEMSIC C2122Mはセンサーとして使用されます。 これまでのところ、現在のコントローラーを再フラッシュしてボードを変更する必要はないため、ミラー用に独自のボードを作成し、ロジックを実装してセンサーから必要な情報を表示することにしました。
問題の解決策。 したがって、標準のボードとインジケーターの寸法を繰り返して独自のボードを作成することが決定されました。コンパスインジケーターを使用しないだけで、必要ありません。 デバイスのロジックは次のとおりです。
1)3つのボタンがあります:「+」、「PWR」、「-」:明るさを追加し、バックライトをオンまたはオフにし、明るさを減らします。
2)ボタンを押すと、バックライトがオンになり、情報が20秒間表示されます。
3)画面がオンの場合、PWRは画面をオフにします。
4)温度データは1秒ごとに更新されます。
したがって、デバイスの機能図の形式は次のとおりです。
したがって、スキームに従って、SPIによるマイクロコントローラーは、2つのLEDドライバー、2つの温度センサーと対話します。 ボードからの無線要素の一部を使用するための標準を繰り返す回路によって、すべてが駆動されます。
STM8Sラインの中で最も安価なSTM8Sラインとして、STM8S003をマイクロコントローラとして使用し、特にGPIO、RCC、SPIのみが必要です。 温度センサーはDS18B20を使用したため、赤字を構成せず、手元にあります。 LEDインジケータを制御するには、MAX7221を使用しました。
MK STM8S003には次の特徴があります。
このMKの選択は、そのシンプルさ 、危機における安さ 、および単純な開発ツール(STM8S-Discovery)の可用性によるものです。 シグネットを作成したくない場合は、次のデバッグボードを使用してブレッドボードで同じ操作を実行できます。
ebayの価格はわずか120ルーブルです。
機能図に基づいて、デバイスの次の回路図が取得されます。
両面実装のボードはフォトレジストを使用して作成され、彼は紫色のマスクの層も作成しました。これにより、次の製品、「標準」ボードと独自のロジックを持つ「パッチ」ボードが作成されました。
ソフトウェアの実装は非常にシンプルで、最初にArduinoに基づいて作成され、次に機能がSTM8S戦闘製品に移植され、車にインストールできる状態になります。 気候制御とMTBFのベンチテストは成功したので、ボードは現在自動車に取り付けられています。 同僚がインストールを行うとき、私は彼の車のすべての変更に関する包括的なレポートを作成します。
ソースコード内には、3つの単純なCライブラリがあります。
- ブザーで動作する
- LEDドライバーを使用する
- DS18b20と連携
プログラミングの観点から見ると、キーポイントはSTM8クロックがフローティングであるため、DS18b20の遅延はベースタイマー番号4に実装されます。たとえば、16 MHzの周波数でのコントローラーの15μs遅延機能は次のようになります。
void _delay_15us(u16 n_15us) { /* Init TIMER 4 */ CLK_PeripheralClockConfig(CLK_PERIPHERAL_TIMER4, ENABLE); /* : / (2^3) = 8 /3 */ TIM4->PSCR = 3; /* SYS_CLK_HSI_DIV1 Auto-Reload: 16M / 8 = 2M, 15 30 */ TIM4->ARR = 29; // 30 - 1 /* */ TIM4->CNTR = 29; /* */ TIM4->SR1 &= ~TIM4_SR1_UIF; /* */ TIM4->CR1 |= TIM4_CR1_CEN; while(n_15us--) { while((TIM4->SR1 & TIM4_SR1_UIF) == 0) ; TIM4->SR1 &= ~TIM4_SR1_UIF; } /* */ TIM4->CR1 &= ~TIM4_CR1_CEN; CLK_PeripheralClockConfig(CLK_PERIPHERAL_TIMER4, DISABLE); }
UART1を使用したDS18b20センサーとの交換の例は、artkoを促しました 。
void ds1820_uartinit(uint32_t baud) { USART_DeInit(USART1); USART_Init(USART1, baud, USART_WordLength_8b, USART_StopBits_1, USART_Parity_No, USART_Mode_Rx | USART_Mode_Tx); } void ds1820_write(uint8_t byte) { UART1->DR = byte; while (!(UART1->SR & (uint8_t)UART1_FLAG_TC)); // } uint8_t ds1820_read() { return ((uint8_t)UART1->DR); } void ds_write(uint8_t byte) { int i; for(i = 0; i < 8; i ++) { if(byte & 1) { ds1820_write(0xff); } else { ds1820_write(0x00); } ds1820_read(); byte >>= 1; } } uint8_t ds_read() { int i; uint8_t res = 0; for(i = 0; i < 8; i ++) { ds1820_write(0xff); uint8_t c = ds1820_read(); if(c == 0xff) { res |= (1 << i); } } return res; } void ds1820_startconversion() { ds1820_uartinit(9600); ds1820_write(0xf0); ds1820_uartinit(115200); ds_write(0xcc); ds_write(0x44); } int16_t ds1820_readtemp() { ds1820_uartinit(9600); ds1820_write(0xf0); ds1820_uartinit(115200); ds_write(0xcc); ds_write(0xBE); uint8_t temp1 = ds_read(); uint8_t temp2 = ds_read(); int16_t temp3 = (uint16) temp2 * (uint16)0x0100L + (uint16) temp1; return temp3; } ds1820_uartinit(9600); ds1820_write(0xf0);
インジケータの輝度レベルは、構造を使用して説明した「メモリカード」の原理に従って、不揮発性メモリに保存されます。 構造の各フィールドには、値を取得する機能と新しい値を記録する機能があります。
結論 そのため、車内外の温度測定の問題を解決する車用のデバイスが開発されました。 それは単純な機能のように見えましたが、中国の車では何らかの理由でそうではないか、一般の人からは非常に隠されています。
新しいボードの機能のデモ:
「標準ボード」のコンポーネントのデータシート:
www.moly-tech.com/uppdf/MEMSIC/MMC2122MG%20RevC.pdf
kazus.ru/datasheets/pdf-data/3675111/MEGAWIN/MPC82E54AS2.html
cholla.mmto.org/computers/avr/cool_parts/tm1638.pdf
ボードファームウェアのソースコード:
IARのソースコード
UPD:
ミラーの組み立てプロセスが約束したように:
負の温度テスト:
ミラーアセンブリ!