投稿

ラベル(Arduino)が付いた投稿を表示しています

MAX5142をArduinoで使う

イメージ
  MAX5142(姉妹品MAX5141,MAX5143,MAX5144) のArduinoからのSPI経由での制御のテスト 【MAX5142とは】 https://datasheets.maximintegrated.com/jp/ds/MAX5141-MAX5144_jp.pdf 14bitのDAC。MAX5141はユニポーラー専用、MAX5142は.ユニポーラーでの利用または外付けのオペアンプを使ってバイポーラー(正負の電圧)するための端子が用意される。41,42は入力電圧が5Vの製品で、43,44は3.3Vの製品 SPI接続にてマイコンとは通信をする。 設定コードと電圧の関係は、データシートにみることができ、 ここではユニポーラの動作を確認する。 10進数で8192(2進数で1000 0000 0000 00)が基準電圧の半分の出力で、16383(2進数で1111 1111 1111 11)が最大となる。この点を理解して、コードを送り込めばよいことになる。 データシートのピン配を見ながら接続をする。 CS           D10 (CS:Chip-Select Inputのこと。LOWの時有効) SCLK     D13 (クロック) MISO      D12 (MISO)今回は使わない DIN     D11  (MOSI)  Master out Slave in でArduinoはマスタなので、D11をMAX5142のDINに接続。D12は今回データを受け取らないので未接続とした。 CLRは、非同期にLOWの時、出力をゼロにする。デジタルピンに配線してプログラムからゼロにできるようにしたいのであれば接続するが、今回は使っていない。10kΩの抵抗で5Vに接続。 DIP化には、MSOP(10ピン 0.5mmピッチ) https://akizukidenshi.com/catalog/g/gP-06863/ を使った。 5142の電源供給には、電源バイパス及びグランド管理 としてピン10(GND)と9(VDD)の間にパスコン0.1uFを挿入。 基準電圧(REF)の端子には、このMAX5142のテストのために...

Arduino:アナログ入力安定化 ReadVcc();

イメージ
Arduinoのアナログ入力でセンサからの電圧を読ませる際に、できるだけ真値に近づけるため読み取った整数から電圧に戻す際に、Vcc=5.00Vとせずに、テスターを当てて実測したVccをスケッチ上変数として入れるようにはしていた。 しかし、PCのUSBを使って電源をとっていると、PCを操作してアプリを立ち上げたりすると読み取り値が変化する事で制御値が揺れる事は気が付いていた。 しかも、せっかくセンサや制御回路を作っても他のPCに接続したらまた電圧が違うので、現場で電圧測定して、スケッチを書き込んでと・・・しなければならない。 これを解消するに、素人としては、Vrefを内部基準にして1.1Vにしてあげて、抵抗をつかって分圧をかけて、5Vを1.1V以内にしてVccを読んであげれば・・・と考えていた(よくある手法らしい) そこは先人の方々!ちゃんと対処法は見出してくださっている http://radiopench.blog96.fc2.com/blog-entry-490.html?sp (↑いつもお世話になっています・・) 何も外部回路をつけなくても、Vccを知る事ができる。テスターと比べた結果1%、40mV程度低くでる。しかし、真値が何か?なのだが、これ重要なのが、他のセンサの値も同じ基準で読むから、これをテスタに合わせる必要もない。必要なタイミングでVccを更新すればVccの変動に対しても安定にあるというお花h氏。 テストに使ったスケッチ void setup() {   // put your setup code here, to run once:   Serial.begin(115200);  } void loop() {   // put your main code here, to run repeatedly:  float Vcc=ReadVcc();  Serial.print("Vcc= ");  Serial.println(Vcc,2);  delay(500); } float ReadVcc(){   long sum=0;   //set up ADC   ADMUX = B01001110;   //bit...

Kicad to gcode by FlatCAM

イメージ
Kicad→gcode by FlatCAM  CNCがまだ製作中で、数々の問題はあるものの、削れるようになってきたのでPCBの加工に向かって準備。Kicad→gcodeの準備。 【FlatCAMダウンロード&インストール】 FlatCAMは、pythonのインストールが必要だとか書いているページがあるが、 https://bitbucket.org/jpcgt/flatcam/downloads/ のインストーラーで一発起動。 使い方は、ここで備忘録に記録するまでもなく、先人の方のすばらしい手順の通りで。後日たどり着けるようにURLをここに。 https://denshikousakusenka.jimdofree.com/cnc/flatcam%E4%BD%BF%E3%81%84%E6%96%B9-1/

SSD1306 DSD TECH OLED 0.91インチーOzoled

イメージ
SSD1306 DSD TECH OLED 0.91インチーOzoled https://github.com/mistertwo/ozoled-oled-display-096-i2c-driver-library Clone&downloadのボタンを押して、ZIPをDL スケッチーラインブラリをインクルードーZIP形式のライブラリをインストール でDLしたZIPを選択 ファイルースケッチ例からOLED_Hello_Worldを選択して実行すればOK。 #include <Wire.h> #include <OzOLED.h> void setup(){   OzOled.init();  //initialze Oscar OLED display   OzOled.printString("Hello World!"); //Print the String } void loop(){ } これでフラッシュが3.3kb、RAMが234バイト。 前のAdafruitのライブラリーをそのままで同じHelloWold!を表示させたときは、 12.63kb、RAMが342バイトだったので、軽い!というは特徴。 Attiny85でも使いたいのでライブラリを探す https://gist.github.com/tinytintoy/51ed73b7afae9cabcb9fb1a6890b6f94 先人の方々に感謝。TinyOzOLEDってのが https://github.com/SensorsIot/TinyOzOled か上とら同じように、ZIPをDL.ライブラリーを取り込みます。 Attiny85にArduinoISPで書き込みできる状態にして(いっぱいある紹介されているんでここでは割愛。 ここ とか) #include "TinyWireM.h" #include "TinyOzOLED.h" void setup() {   OzOled.init();   OzOled.printString("Hello World!!",0,0); } void loop() { ...

Arduino SSD1306 DSD TECH OLED 0.91インチーAdafruit

イメージ
アマゾンでおそらくもっとも安い OLED 。 DSD TECH 2 PCS OLED 0.91インチディスプレイ IIC I2C シリアルポート Arduino ARM用、2つで999円(一つ500円) 秋月のLCDのAQM0802よりも、 OLEDでディスプレイであり、 バックライトが入っていて明るいし、グラフィカル。 DSD TECHのホームページの案内が箱に入っているけど、使っているICは、SSD1306。 開封してどこかにやってしまった・・・ ライブラリーマネジャーからSSD1306を検索。 Adafruit_SSD1306が見つかるので、インストール。これを動かすのに必要な他のライブラリーが入っていないと警告でればALLでインストール。 インストールが完了したら、スケッチ例に、Adafruit_SSD1306が現れるようになる。 128x32画素、I2C用のスケッチ例があるので選択。 起動すると、Adafruitのロゴマークが表示されて、その後デモが始まる。 ここまで秒殺で設定できて、AQM0802をずっと使っていたら、感動する・・・ グラフィックスで遊ぶのもよいが、LCDの代わりに計測した値を表示するとか、そういう用途に使うので、デモのテストスケッチから文字を映しだすのに必要な部分を抜き出すと以下、サクッと容量とか気にしないプロジェクトの場合はこれで十分かな。 それにしても容量を食います。やりようはあるんでしょうけど、 OzOLEDに次ぎは行ってみます。 #include <SPI.h> #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 32 #define OLED_RESET     4 Adafruit_SSD1306 display(128, 32, &Wire, 4); void setup() {   // initializes   display.begin(SSD13...

Attiny85とAQM0802A(LCD)のI2C接続

イメージ
Attiny85とAQM0802A(LCD)のI2C接続 以前に 、ブレッドボード上でArduinoにAQM0802を接続して文字を表示できたので、今度はAttiny85での表示。 Arduino UNO,Nanoだと"Wire.h"を読み込むんだがAttinyでI2Cを扱うには、”TinyWireM"を読み込む。 またLCDで提供されているST7032.hの中身とかも変更する必要がある。 そこは自分でやらなくても、非常に先人の方々がまとめてくれている。( ここと か) ・はまった点症状 AttinyにちゃんとISPから書き込みができているのに液晶に何も映らない。 かと言って同じスケッチをNanoに書き込み”Wire”に戻してあげて接続すると動く。 つまり、スケッチが悪い訳でもないし、液晶が壊れている訳でもない。 VCCのラインにスイッチを設けてやって、スイッチをなぜかダブルクリックすると液晶が映る。一度映ると消える事はないが、たまに映らない事があり不安定・・・ なぞのままである。 でAttinyが表示器を手にいれられた。 でスケッチを書き換えて温度計としてみる。 サーミスタのテストをしたとき のスケッチとマージして、Attiny85で計測して表示する。 26度付近の室温を示して、サーミスタを手でつまむと34度とかまですぐ上昇。 温度表示まではできた。 //this is a test for attiny85 thermistor //measured temperature is displayed on LCD AQM0802A  //  PB5[  ]VCC  //  PB3[  ]PB2 SCL  //  PB4[  ]PB1  //  GND[  ]PB0 SDA #include <TinyWireM.h> #include <ST7032.h> ST7032 lcd; const int PIN_ANALOG_INPUT = 4; const float V5V = 5.0;//measured voltage +5V p...

AQM0802A lcd

イメージ
AQM0802A lcd 目標は、Attiny85専用のLCDとしてAttiny85用のシールドを作っておこうという計画。 さっとAttiny85にセンサーをつけて、そのセンサから数字を表示してという事で役立つ。 http://akizukidenshi.com/catalog/g/gP-0666 秋月で一番安いLCD、I2C仕様。320円。この価格だと組み込みに遠慮なく使える。 ただし、これだけ購入しても動かない。 周辺にコンデンサとか抵抗とかをつけてあげないといけない。 また、ピッチが1.5mm。ピッチ変換基板が売られているが400円する!!本体より高い。基板とのセット600円。これだと、Amazonでそれもプライムのものをまとめ買いした方が安い。 https://www.amazon.co.jp/gp/product/B07D9H83R4/ref=ppx_yo_dt_b_asin_title_o00_s01?ie=UTF8&psc=1 一つ500円。 とは言え、周辺回路も大したことないのでこれを使う。 まずブレッドボードでのテスト。そのままブレッドボードにささらないので、ピンを交互に追って、後ろのピンをICクリップでつかんで無理やり配線。美しくない・・・ 配線は、 http://akizukidenshi.com/download/ds/akizuki/AE-AQM0802-sch.pdf I2C接続小型LCDモジュール用ピッチ変換基板 [AE-AQM0802] 通販コード P-06794 の回路図面の通りに接続する。 ArduinoのIDEからライブラリーの管理を選択して、AQM0802を検索窓に入れてライブラリーをインストール スケッチの例からいくつかの例を動かしてみたところちゃんと動作。 ここで5Vと3.3Vに関して AQM0802Aはデータシートを見ると入力電圧が5.5Vまで受け付けられるので、5Vでも3.3Vでも動く。VCCを5Vと3.3Vのピンに差し替えて試してみた。 で試した見た結果・・・ 両方動きます。 スイッチサイエンスとかから販売されているものは、5V用と言っても抵抗で分圧して3.3Vを作っているが、その必要もなく回路も同じでよいです。 しかし、コントラス...

MCP4725 DAC

イメージ
MCP4725 I2C経由で設定した電圧が出力できる便利もの http://akizukidenshi.com/catalog/g/gK-08677/ amazonからでも安く購入可能 ちょっとしたプログラム電源として各種のテストで使える。<=5.5Vまで 【準備】 ここはいっぱい解説しているから他のサイトを参考に IDEからスケッチーライブラリーをインクルードーライブラリを管理 MCP4725で検索、インストール シリアルモニターから入力した0-4095の値に応じて出力を変化させるスケッチを作成してみた。 *********************** //standard MCP4725 using adafruit // from serial monitor, set DAC value #include <Wire.h> #include <Adafruit_MCP4725.h> #define MCP4725_ADDR1 0x60              //MCP4725 address Adafruit_MCP4725 dac; void setup(void) {  Serial.begin(9600);  dac.begin(MCP4725_ADDR1);   //Begins the I2C communication  dac.setVoltage(0, false);   //set zero volt } void loop(void) {  int data_size = Serial.available(); if (Serial.available() > 0)   {     delay(20);     int data_size = Serial.available();     byte buf[data_size];     Serial.print("data size:");...

Arduinoインストール

イメージ
Arduino ジャンク部品で新しくPCを立てたのでメモとして ArduinoIDEインストール https://www.arduino.cc/en/Main/Software ・arduino-1.8.12-windowsをダウンロード(インストーラーをDL) ・Windowsのアイコンがあるのでつい押したくなるし、インストールされてしまうのでつい押したくなるが、WindowsAppとしてはDLしない。インストール先が、WindowsAppsの下になると後々に、直接Arduinoのファイルを編集したくても、アクセス拒否の問題に直面する。 ・インストール先の指定 デフォルトでは、ProgramFilesの下になるので、C:直下、またはD:\Arduino直下等へ。 (スペースの入るフォルダ名を避けるために) ・テスト UNO等何種類か持っているが、手元にあったNANO(中華CH340)にてテスト。 IDEを起動、ファイルースケッチ例ー01.Basic-Blinkを選択。2020年5月時点では、 CH340を使っているボードだが、インストール直後からデバイスマネジャーで一発認識。特に何もする必要がない模様。 Blinkを送り込んでやるとオンボードのLEDが無事点滅点灯。