買ってしまった(HiLetgo 10PCS TP4056ミニUSB 1Aリチウム バッテリチャー ジャーモジュール 充電ボード 4.5V-5.5V [並行輸入品])

リチュームイオン電池の充電用ICやアセンブリはすでに十分持っているにもかかわらず、
10個で260円、送料無料という挑発に乗って買ってしまいました。一個26円には負けます。

電源はUSBからですが、ミニUSBなので要注意です。

買ってしまった(HiLetgo 10PCS TP4056ミニUSB 1Aリチウム バッテリチャー ジャーモジュール 充電ボード 4.5V-5.5V [並行輸入品])
アマゾンの商品写真より

デジカメ PowerShot SX260 HS のリチュームイオン電池(3.7V)を充電してみました。
無事充電できました。

使用されているIC TP4056のデータシートはネット上にあります。
回路は典型例にほぼ沿っているようです。

Rprogによる最大充電電流の設定は1.2Kオームで1000mAとなっていました。
完全放電のガラケイ電池の充電で開始時の短時間に980mA流れました。
400~500mAの充電時のICの温度は約20度UPでした。

数個の電池を充電してみると、
充電完了後の電池電圧は4.00V辺りです。
この時、供給電源の電圧は5.10V程度でした。念のために6.00Vでテストしましたが、結果は変わらずです。
以前作った「リチューム・イオン電池の充電テスト(MCP73863)」で充電するとさらに充電し、4.1~4.2Vになります。


状態表示用のLEDも実装されています。


制作



買ってしまった(HiLetgo 10PCS TP4056ミニUSB 1Aリチウム バッテリチャー ジャーモジュール 充電ボード 4.5V-5.5V [並行輸入品])

こんなのを作りました。
ケースなし、エポキシ接着剤で絶縁を兼ね封印しただけ。

写真の電池は、ドコモのF10ですが長期間使用いていない為放電し、保護回路が働き端子電圧は0V。
さらに劣化もしていて少し膨らんでいます。

充電開始時は0.98Aでしが、写真を撮っている間に0.66Aとなりました。
電池への供給電流と電源側からの供給電流は一致していました。

ドコモのF10の充電結果は3.98Vとなり、端末では電池マーク2本(FULL4本)となり、
以前作成(前述)の充電器では、4.12Vまで充電し端末では電池マーク4本となりました。

スポンサーサイト

315MHz 送信モジュール 消費電流 調査(HiLetgo 315Mhz 無線受信モジュール 警報発射器 超再生モジュール Arduinoと互換 [並行輸入品])

アマゾンで買った「HiLetgo 315Mhz 無線受信モジュール 警報発射器 超再生モジュール Arduinoと互換 [並行輸入品]」の
送信モジュールの消費電流を測定しました。

315MHz 送信モジュール 消費電流 調査(HiLetgo 315Mhz 無線受信モジュール 警報発射器 超再生モジュール Arduinoと互換 [並行輸入品])
アマゾンの商品写真より

この送信モジュールは
DATAをGNDに接続した時、電波は送信されない。
DATAをVCCに接続時した時、電波が送信される。

VCCは5.18Vでテスト。

(1)DATA端子をGNDに接続時 7μA以下(テスターの表示は0)
(2)DATA端子をVCCに接続時 13mA

※DATA:基板の印刷はATADとなっていますが、DATAと読み替えています。

■動機
電池駆動する時のスタンバイ(送信なし)の時の消費電流を確認する為。

PIC12F675 GPIO port change interrupt 処理のループと対策(備忘録)

PIC 12F675の割り込み処理がうまく動作しないので調べてみました。

GPIO port change interrupt 処理がループしている模様です。
割り込み処理を一旦抜けるものの再度割り込み処理に入る。これを永遠に繰り返します。

開発環境 : MPLAB X IDE v3.51、Microchip MPLAB XC8 C Compiler (Free Mode) V1.40、ICD3です。

■結果
GPIO port change interrupt の割り込み処理内でGPIOレジスタに何らかのアクセスを すると、割り込み処理ループの現象は無くなりました。

調査


■発生時のソース

※下記ソースは現象確認の為のもので、この現象に気づいた時のものではありません。

GP5がport change 監視の対象ピン(外部からパルス信号を与える)
GP1はオシロによるデバック目的の出力ピン(今回のレポートでは使用していません)
GP4はCLKOUTとして、クロックを監視(目的は割り込み処理内での現象把握の為)

/*
 * GPIO割り込みテスト
 * Created on 2017/02/11, 8:17
 */

// CONFIG
#pragma config FOSC = INTRCCLK  // Oscillator Selection bits (INTOSC oscillator: CLKOUT function on GP4/OSC2/CLKOUT pin, I/O function on GP5/OSC1/CLKIN)
#pragma config WDTE = OFF       // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRTE = OFF      // Power-Up Timer Enable bit (PWRT disabled)
#pragma config MCLRE = ON       // GP3/MCLR pin function select (GP3/MCLR pin function is MCLR)
#pragma config BOREN = ON       // Brown-out Detect Enable bit (BOD enabled)
#pragma config CP = OFF         // Code Protection bit (Program Memory code protection is disabled)
#pragma config CPD = OFF        // Data Code Protection bit (Data memory code protection is disabled)


#include <xc.h>

char time_count;

void interrupt intservice() {
    INTCONbits.GIE = 0;
    if (INTCONbits.GPIE && INTCONbits.GPIF) {
        INTCONbits.GPIF = 0;

        if (time_count++ > 10) {
            INTCON = 0x00;
            SLEEP();
        }

        //asm("MOVF GPIO,W");
    }
    INTCONbits.GIE = 1;
}

void main(void) {
    GPIO = 0x00;
    ANSEL = 0x00;
    CMCON = 0X07; //Comparator Off (Lowest power) CM2:CM0 = 111
    TRISIO = 0b00100000; //GPIO5:input
    GPIO = 0x00; //GPIOクリア
    INTCON = 0x00; //割り込み不許可
    OPTION_REG = 0x00;
    IOC = 0x00;
    PIE1 = 0x00;
    ADCON0 = 0x00;

    GPIObits.GP1 = 0;
    GPIObits.GP2 = 0;
    INTCON = 0x88;  //Enables all unmasked interrupts;
                    //Enables the GPIO port change interrupt
    IOC = 0b00100000; //IOC5 : enable an interrupt-on-change

    time_count = 0;
    while (1) {
        asm("MOVF GPIO,W");
        //asm("MOVWF GPIO");
    }

    return;
}


■発生時のオシロ波形

※CH1(黄) GP5がport change 監視の対象ピン(外部からパルス信号を与える)
※CH2(青) GP1はオシロによるデバック目的の出力ピン(今回のレポートでは使用していません)
※CH3(紫) GP4はCLKOUTとして、クロックを監視(目的は割り込み処理内での現象把握の為)
PIC12F675 GPIO port change interrupt 処理のループと対策(備忘録)
(1)CH1(黄) GP5入力端子にパルスが入り、信号レベルが変化すると、
(2)interrupt intservice()に制御が移る。
(3)intservice()内で、time_count++により割り込み回数をカウントし、
(4)一定回数(10回)を超えると、SLEEPさせる。(注1)
(5)SLEEPより、内部クロックが停止しCH3(紫) GP4のCLKOUT波形は停止する。これによりSLEEPを通過したことを確認した。

※注1:GP1にパルスを出す方法では、GP1へのアクセスそのものがこの現象を妨げる要因になるので、SLEEPを使用し内部クロックを停止する事により、ポイント通過を確認しました。


■現象要約
一度の割り込みであるにもかかわらず、連続して10回以上の割り込みが発生する。
time_countを100回カウントしても同様。


発生要素


(1)mainのループ、この場合while(1)内でGPIOレジスタにアクセスし、かつ
(2)interrupt intservice()内で、GPIOレジスタにアクセスしていない場合
に発生する。

対策


interrupt intservice()内で、asm("MOVF GPIO,W"); によりGPIOに空アクセスする。
main()内でGPIOへのアクセス制限はかけられない為。


感想


■この対策に気づいた理由は、

PIC12F675 GPIO port change interrupt 処理のループと対策(備忘録)
出典:MICROCHIP社のPIC12F629/675 Data Sheet

↓上図の拡大
PIC12F675 GPIO port change interrupt 処理のループと対策(備忘録)

入力はすでに安定しているにもかかわらず、Interrupt-on-Changeが発生するということは、上図右下の2つのDフリップフロップよるchange検出回路が動作していない、すなわち、RD PORTが出ていない。
よって、GPIOを空読みしたらいいのでは。
これで解決しましたが、このRD PORTは単にポートを読む時だけではなさそうです。mainでのwhile(1)よる空ループではGPIOのリードをしなくても、changeを検出しています。

■さらに詳細は
その後、色々試みましたが良く判りませんでした。





お知らせ
■注意:Google Chrome以外のブラウザでは動作しない事もあります。
お好みに応じて
画像だけの表示でいいよ
やっぱり全部表示して
背景は黒がいいな
背景を元に戻して
サブジャンル
メモリアルマップ
My Favorite Photo
検索フォーム
プロフィール

otsu.usiwakamaru

Author:otsu.usiwakamaru
五条の橋でひらりひらりと欄干を飛び渡る牛若丸のように、興の向くまま電子回路にプログラミングに写真にと飛び回っています。

プロフィール詳細

カレンダー
01 | 2017/02 | 03
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 - - - -
キーワード
クリックしたキーワードの記事のみ表示します。

電池 試み IXY デザイン  改造 3D ミッキー 

最新記事
月別アーカイブ
全記事表示リンク

全ての記事を表示する

おすすめプログ(新着記事)
リンク


にほんブログ村
カテゴリ
ART (1)
橋 (0)
PIC (2)
カウンタ
訪問者数(UU)

アクセス数

現在の閲覧者数

tael no013用