エントリー

2015年11月の記事は以下のとおりです。

秋月の小型キャラクタLCDの表示確認

こちらを参考に秋月の小型キャラクタLCDの表示確認を行った

確認したのは16x2(AQM1602):ピッチ変換基板セットで¥550

001

8x2(AQM0802)のもう1ランク小型もあるが表示文字数が少なすぎるので購入していない

ピンは基板などに取り付けた時の必要面積を小さくするため説明書とは逆の内側になるように実装

002

表示確認

5V、3.3V(Arduino)動作かで注意が必要(説明書通りのプログラムでハマった)

//液晶初期化
void INIT_LCD()
{
    delay(100);
    writeCommand(0x38); // FUNCTION SET
    delay(20);
    writeCommand(0x39); // IS=1 
    delay(20);
    writeCommand(0x14); // INT OSC FREQUENCY 
    delay(20);
    writeCommand(0x7A); // 7faONTRAST SET 0,1,2,3 (3.3V=0x73, 5V = 0x7A)
    delay(20);
    writeCommand(0x54); // 54CONTRAST SET 4,5 (3.3V=0x56, 5V= 0x54)
    delay(20);
    writeCommand(0x6C); // F0LLOWER CONTROL 
    delay(20);
    writeCommand(0x38); // IS=0
    delay(20);
    writeCommand(0x0C); // Display ON 
    delay(20);
    writeCommand(0x01); // Clear Display 
    delay(20);
    writeCommand(0x06); // Entry Mode 
    delay(20);
}

LCD初期化で内部の昇圧回路をON・OFF制御しなければならないようだ

100円ライト

ATTINY13の続きをやりたいが時間が取れないので100円ライトを評価

前に仕事で使うため100円ライトを購入(少し改造)したが筐体が金属製のため電気関係の仕事で使うのは少々危険・・・なので金属製でないライトで良さそうなの2種を買ってきた

LED1LED2

感想

①LEDズームライト

「充電池は使用しないでください」と記載されているが単4エネループ3本を使って確認、問題なく点灯(充電池のほうが電圧低いので点灯しないかもしれないだけで問題ないでしょ)

1-1

パワーLEDが使われていて(目測だが)小さいのに1WのパワーLEDより明るい

1-2

1-3

すべてネジ留めになっていて分解できるので集光レンズだけ取って別で使うこともできそう

で、前に改造した1W LEDで試してみたら集光できるがこのLEDライトのほうが明るいしバッテリーも持つので意味なし

②LED懐中電灯mini

電池1本仕様なので昇圧回路は入っているはず(分解は後日できればやってみよう)

 2-1

エネループでも問題なく点灯した

昇圧だし大した照度ではないだろうと思っていたがそうでもなく十分明るい

パワーLEDが利用されていて単3で20時間も使えるとは素晴らしい性能である

 

どちらのライトとも100円とは思えない出来であった

また時間あったら追加で評価する

ATTINY13用の開発支援ボードを作る(続き)

USBシリアル変換モジュールを使って送受信が可能になったのでボードの空きの部分(後になんらかの機能追加できるように空けていた)に丁度USBシリアル変換チップが余っていることもありUSBシリアル変換モジュールを追加することにした

チップ

安くUSBシリアル変換モジュールが作れないかなと思って購入していたパーツでようやく挑戦することになる(今なら超小型USBシリアル変換モジュールを使えば手間かからないかも)

回路図

VSOP用のボードが28ピン用のためスペースがあるのでUSBコネクタを付ける(FT231は20ピン)

USB

USB裏

チップを載せるために半田メッキする

半田メッキ

チップを置いて半田で温めて付けようとしたら・・・げげぇ幅が足りない・・・ボードをミスったか・・・ギリギリの線まで足を置いて後は半田を延ばして無理やり付けた(ピン1つがなかなか接触しなくて時間かかり壊れてなければよいが・・・)

半田付け

必要な部分のみピンを付けてボードは完成

ピン

実態結線図を作成して

実態結線図

※)都合良いパーツは無かったので、27Ω ⇒ 20Ω、47pF ⇒ 22pFを使用

ブレッドボードで確認

ブレッドボード版

ところがFT232RLでは正常だったのにFT231XSでは文字化けが発生してしまう

参考記事でOSCCALの調整で改善されるかもと調整を試みる

#include <BasicSerial3.h>

void setup( ) {
  pinMode(3, OUTPUT);
}

void serOut(const char* str) {
   while(*str) TxByte (*str++);
}

void loop() {
  char buf[4];
 
  for(uint8_t i = 0; i <= 128; i++) {
    digitalWrite(3, HIGH);
    itoa(i, buf, 10);
    OSCCAL = i;
    serOut("***** OSCCAL=");
    serOut(buf);
    serOut(" *****\r\n");
    delay(1000);
    digitalWrite(3, LOW);
    delay(1000);
  }
}

以下のように出たので91を設定してみたが改善せず

クロック調整

いろいろとプログラムを調整していたら長い文字列だと文字化けするようなので連続して送信する文字数の上限を設けてみたら解決

void serOut(const char* str) {
  while (*str) TxByte(*str++);
}

以下のように上限を8文字にした

void serOut(const char* str) {
  while(*str) for(int n = 0; *str && n < 8; n++) TxByte(*str++);
}

ブレッドボード上で送受信とも確認できたのでシールド基板上に取り付け完成

完成ボード

追加として以下を設置

  • 電源切り替えスイッチ(シールド上のUSBかArduinoの5Vピンかの切り替え)
  • 電源LED(緑)

使い方は以下を参照

ArduinoISP 使い方・書き込みテストArduino IDE で ATtiny 他の開発

消えると困るので転用し編集させてもらった

①開発ボードをArduinoUNOにセット

②ArduinoUNOにArduinoISPスケッチを書き込む

IDEの[ファイル]→[スケッチ例]→[11.ArduinoIAP]→[ArduinoISP]をマイコンボードに書き込む

③書込み装置選択

IDEの[ツール]→[書込み装置]の[Arduino as ISP]を選択

④ボード選択

IDEの[ツール]→[ボード:]で[ATtiny13(bitDuino13)]を選択

IDEの[ツール]→[Clock:]と進み[1.2MHz(Internal)]を選択

⑤テストスケッチを入力

#define PIN 3
#define DTIME 500

void setup() {
    pinMode(PIN, OUTPUT);
}

void loop() {
    digitalWrite(PIN, HIGH);
  delay(DTIME);
   digitalWrite(PIN, LOW);
   delay(DTIME);
}

⑥「マイコンボードに書き込む」ボタンをクリック

コンパイルと書き込みが行われLEDが約0.5秒間隔で点消灯する

⑦クロックを変更(工場出荷時は1.2MHz)

IDEの[ツール]→[Clock:]で[9.6MHz(Internal)]を選択

再度「マイコンボードに書き込む」ボタンをクリック

LEDが約4秒間隔で点消灯する(内蔵クロック1.2MHzで動作しているのにクロック9.6MHzとしてスケッチをコンパイルして書き込んだために起こる現象)

⑧ヒューズビット書き換え

IDEの[ツール]→[ブートローダの書き込み]を実行

ダミーのブートローダ書き込みによりヒューズビットの書き換えとプログラムの消去が行われる

もういちど,「マイコンボードに書き込む」ボタンをクリックしてスケッチをコンパイルして書き込むとLEDは約0.5秒間隔で点消灯する

 

ATTINY13用の開発支援ボードを作る

ATTINY13を使うにあたって毎回ブレッドボートに構築してると大変なので、ATTINY13用の開発支援ボードを作ることにした

仕様として

  • Arduinoシールド化で簡単に書込み準備可能にする
  • 電源電圧3.3Vに切り替え可能にする(電源スルーと3.3V降圧)
  • 動作試験できるようにLEDを配置
  • デバッグ用のシリアル出力

シリアル出力は、以下の記事を参考にして半二重通信だが1ピンで送受信を可能にする

ATtiny13Aでシリアル通信(UART)を行う

ATTiny13Aで割り込みを利用したパソコンとのシリアル通信

 

開発ボード回路

追記

  • 7,6,5,1ピンは、それぞれArduinoシールドピン、13,12,11,10に接続(ISP)
  • 1ピンはタクトスイッチでリセット可能
  • 2ピン(LED)3ピン(UART)は、切り離し可能とするため短絡ピンを通す
  • 各ピンはブレッドボードなどに取り出し可能とするためピンソケット接続

最初は2SC1815を使っていたが、5Vでしか動作しないので3.3Vでも動作するように2N7000に変更

開発ボード

通信はUARTなのでPCと接続するためにFT232RL(USBシリアル変換モジュール)を使うが動作しない

直接PB4から送信すると問題ないのでTxとRxを分離する回路が問題のようで、しかたないので送信だけに仕様変更しようとも思ったが少し調査することに・・・

まず単にダイオードで接続されている送信ができない?のか、原因はFT232RL側のRxに電圧がかかっており逆流していたためで、USBシリアル変換モジュールのVCCIOの電源を無効にすれば解決した

またオシロで送信データを見てみると矩形波になっておらず負論理である0Vが正常に出ていない

オシロ波形1

はっきりした原因は判らないが、ダイオードと並列で0.1μFを入れることでまともになり

オシロ波形

正常に送受信できるようになった

 

ページ移動

  • 前のページ
  • 次のページ
  • ページ
  • 1

ユーティリティ

タグクラウド

検索

エントリー検索フォーム
キーワード

Feed