สดสกวกวเ
eddy gang
วันอังคาร, ธันวาคม 12, 2566
วันศุกร์, มิถุนายน 19, 2563
ข้อสังเกตุ การชาร์จแบตเตอรี่ ลิเที่ยมไออน ฟอสเฟต
อย่างที่เราทราบกันดีจากสเปคของแบตเตอรี่ฟอสเฟต แนะนำว่า ต้องใช้เครืองชาร์จแบบ แรงดันคงที่ (CV) และกระแสคงที่ (CC) โดยใช้แรงดันคงที่ๆ 3.60-3.65V ต่อเซลล์ และกระแสชาร์จตามสเปคของแบตเตอรี่ที่ผู้ผลิตแนะนำ (Normal Charging Current)
จากกราฟที่ผมอ้างอิงมาเป็นกราฟของแรงดันและกระแสในการชาร์จของแบตฟอสเฟต แสดงความสัมพันธ์ของ V และ A ซึ่งบอกว่าเมื่อถึงแรงดัน (เส้นสีแดง) ถึง 3.65V * 4 = 14.6V แล้วจะทำให้กระแส (เส้นสีน้ำเงิน) จะตกลงไปจนเกือบศูนย์ ซึ่งแสดงว่าแบตเตอรี่ได้รับประจุเข้าไปเต็มแล้ว และเครื่องชาร์จเราก็จะตัดการทำงาน
แต่แบตเตอรี่บางรุ่นไม่ได้ทีรูปแบบของกระแสชาร์จเหมือนในอุดมคติ (Ideal) เสมอไป จากประสบการณ์ที่ใช้แบตเตอรี่ฟอสเฟตมาหลายรุ่นผมได้เก็บข้อมูลกราฟของการชาร์จซึ่งจะมีความแตกต่าง
ตัวอย่างจากกราฟ V/A ใช้เวลาประมาณ 2-3 ชั่วโมง
(ทดสอบกับแบตฟอสเฟต 50AH มือสอง)
อีกตัวอย่างจากกราฟ V/A ใช้เวลาประมาณครึ่งชัวโมง
(ทดสอบกับแบตฟอสเฟต 30AH ใหม่)
ซึ่งในบทความนี้เราจะสนใจเส้นกระแสเมื่อแรงดันถึง 3.65V
สรุปว่าแบตบางรุ่นกระแสชาร์จไม่ได้ลดลงไปในทันทีเมื่อแรงดันถึงตามที่กำหนด (ตามตัวอย่างคือ 3.65V) แต่แบตเตอรี่บางรุ่นจะค่อยๆลดลง ขึ้นอยู่กับขนาดความจุและอายุการใช้งาน (ของใหม่หรือมือสอง) ดูเส้นสีน้ำเงิน
สรุปคือ ถ้าชาร์จเจอร์เราตัดโดยดูที่แรงดันเพียงอย่างเดียวจะทำให้แบตได้รับประจุไม่เต็มที่นั่นเอง
ที่มาข้อมูล
1. https://www.solacity.com/how-to-keep-lifepo4-lithium-ion-batteries-happy/
วันอาทิตย์, มิถุนายน 02, 2562
หลักการทำงานของคูลอมบ์เคาน์เตอร์
โดยทั่วไปหลักการวัดความจุคงเหลือของแบตเตอรี่นิยมวัดจากแรงดันคงเหลือปัจจจุบันแล้วเทียบเป็นเปอร์เซ็นต์ว่าความจุคงเหลือประมาณเท่าใด ซึ่งค่าที่ได้อาจไม่แม่นยำสำหรับแบตเตอรี่บางประเภท เช่นแบตเตอรี่ประเภทลิเที่ยมไออนฟอสเฟต (LiFePO4)
ดังนั้นเราจะมาพูดถึงวิธีการวัดความจุคงเหลือด้วยวิธีที่น่าสนใจกว่าที่เรียกว่า ตัวนับคูลอมบ์ (Coulomb Counter) อย่างแรกเรามาทำความเข้าใจก่อนว่าคูลอมบ์คือ กระแสไฟฟ้าที่ไหลด้วยปริมาณ 1A ต่อ 1 วินาที เขียนเป็นสมการได้ดังนี้
ด้วยหลักการดังกล่าวจึงทำให้เราสามารถบอกข้อมูลของแบตเตอรี่ได้หลายตัวแปรได้แก่
1. ค่าประจุที่ไหลเข้าหรือ ออกก็คือค่าประจุที่ชาร์แบตเตอรี่หรือค่าประจุที่ใช้ไป (จากขา POL ของ LTC4150)
2. ค่า SOC (state of Charge)
3. ระยะเวลาที่ใช้โหลด
4. จ่ายโหลดเกินกว่าสเปคของแบตเตอรี่หรือไม่
5. และแน่นอน ค่าความจุคงเหลือ
บางค่ายผู้ผลิดไอซีได้พัฒนาความแม่นยำของ Coulomb Counter โดยการนำค่าอุณหภูมิเข้ามาประมวลผลมากยิ่งขึ้นซึ่งก็น่าสนใจสำหรับนักออกแบบของไทยเนื่องจากบ้านเราเป็นเมืองร้อน
ลองเข้าไปเลือกใช้ไอซีสพหรับการออกแบบ Coulomb Counter ได้จาก ที่นี่
* แน่นอนว่ากระแสที่ใช้ในการชาร์ตแบตเตอรี่ย่อมต้องมากกว่ากระแสที่เรานำไปใช้งานภายหลัง เนื่องจากกระบวนการทางเคมีที่ไม่มีประสิทธิภาพ 100% ซึ่งอาจสูญเสียไปในกระบวนการความร้อนเป็นต้น
แหล่งที่มา
1. https://learn.sparkfun.com/tutorials/ltc4150-coulomb-counter-hookup-guide/all
2. https://offgridham.com/2016/03/about-lifepo4-batteries/
กราฟเส้นสีแดง (Lifepo4) แสดงให้เห็นว่าแรงดันจะตกลงอย่างรวดเร็วเมื่อความจุคงเหลือใกล้หมด
1C= 1A * 1s หรือ
1A=3600C (ต่อชั่วโมง)
ดังนั้นจึงมีแนวคิดง่ายๆว่าถ้าเราต้องการวัดพลังงานที่ใช้ไป (หรือชาร์จกลับ) ก็สามารถวัดได้จากกฏของคูลอมบ์นี้ ผมจะขอยกตัวอย่างจากไอซีสำเร็จรูปเพื่อทำหน้าที่นี้ได้แก่ LTC4150 ของ analog.com ซึ่งการต่อใช้งานจะต่อผ่าน Shunt Resister (Current Sence Shunt Resistors) คือ R ที่อนุกรมอยู่กับโหลด ซึ่งเราสามารถหากระแสที่ไหลผ่านโหลดได้โดยการวัดแรงดันตกคร่อม R ดังกล่าว จาก datasheet ของ LTC4150 ที่ขา int จะ ส่งสัญญาณออกมาทุก 0.614439C หรือ 5859 ครั้งต่อ 1Ah หรือ สัญญาณ int 1 ครั้งจะเท่ากับ 0.0001707Ah ดังนั้นเราก็จะนับ Pulse ดังกล่าว
ซึ่งเราจะ Reset ค่า Counter นี้เมื่อทำการชาร์จแบตเตอรี่จนเต็มแล้ว
ตัวอย่างการต่อใช้งาน
1. ค่าประจุที่ไหลเข้าหรือ ออกก็คือค่าประจุที่ชาร์แบตเตอรี่หรือค่าประจุที่ใช้ไป (จากขา POL ของ LTC4150)
2. ค่า SOC (state of Charge)
3. ระยะเวลาที่ใช้โหลด
4. จ่ายโหลดเกินกว่าสเปคของแบตเตอรี่หรือไม่
5. และแน่นอน ค่าความจุคงเหลือ
บางค่ายผู้ผลิดไอซีได้พัฒนาความแม่นยำของ Coulomb Counter โดยการนำค่าอุณหภูมิเข้ามาประมวลผลมากยิ่งขึ้นซึ่งก็น่าสนใจสำหรับนักออกแบบของไทยเนื่องจากบ้านเราเป็นเมืองร้อน
ลองเข้าไปเลือกใช้ไอซีสพหรับการออกแบบ Coulomb Counter ได้จาก ที่นี่
* แน่นอนว่ากระแสที่ใช้ในการชาร์ตแบตเตอรี่ย่อมต้องมากกว่ากระแสที่เรานำไปใช้งานภายหลัง เนื่องจากกระบวนการทางเคมีที่ไม่มีประสิทธิภาพ 100% ซึ่งอาจสูญเสียไปในกระบวนการความร้อนเป็นต้น
แหล่งที่มา
1. https://learn.sparkfun.com/tutorials/ltc4150-coulomb-counter-hookup-guide/all
2. https://offgridham.com/2016/03/about-lifepo4-batteries/
วันพุธ, กุมภาพันธ์ 20, 2562
รู้จักกับ Balancer และ BMS
กระแส EV มาแรงทำให้ความน่าสนใจของแบตเตอรี่บ้านเรามีมากขึ้น สิ่งที่สำคัญอย่างหนึ่งของการใช้แบตเตอรี่แบบ Multicell ซึ่งอุปกรณ์มีความสำคัญมากให้เลือกใช้ได้แก่
- Balancer ซึ่งมีหน้าที่หลักคือรักษาสมดุลย์ในแต่ละ Cell เพื่อยืดอายุการใช้งานเนื่องจากเมื่อนำแต่ละ Cell มาต่อกันจะพบปัญหาว่าแต่ละ Cell นั้นมีค่าการประจุและคายประจุไม่เท่ากัน โดย Balancer แบ่งออกเป็น 2 ประเภทคือ
- แบบที่ 1 Passive Balancer
ตัวอย่าง Passive Balancer
หลักการทำงาน Balancer ชนิดนี้จะนำแรงดันส่วนเกินไปจ่ายกระแสทิ้งที่ Resister (R1-R4) ตัวอย่างตามรูปนี้ประกอบด้วย HY2212 (AB3A) ทำหน้าที่ตรวจจับแรงดันส่วนเกินส่งไปที่ขา 6 ให้ขอ Gate ของ Mosfet (N-Channel) เบอร์ A2SHB หรือ Si2302DS (Q1-Q4) เพื่อทำการเดรนไปที่ Resister โดย Balancer ชนิดนี้นิยมใช้ในบ้านเรา มีหลายรุ่นให้เลือกตามกระแส Balance เช่น 56mA ,500mA หรือ 1500mA เหมาะกับงานขนาดเล็กที่ต้องการต้นทุนต่ำ
Passive Balancer แบบ 1500mA
ข้อดีคือราคาถูก หาซื้อง่าย
ข้อเสียเกิดความร้อนสูง , ประสิทธิภาพต่ำเนื่องจากพลังงานส่วนเกินสูญเสียไปในรูปของความร้อน ส่งผลใช้เวลาในการชาร์จนานกว่า
วงจร Passive Balancer
หลักการทำงาน Balancer ชนิดนี้จะนำแรงดันส่วนเกินไปชาร์จที่ Cell อื่นที่มีแรงดันต่ำกว่าโดยใช้ IC สำเร็จรูปซึ่งมีหลายเบอร์เช่น LTC3300 ISL94202 ซึ่งทำหน้าที่ตรวจสอบแรงดันแต่ละ Cell ให้ต่างกันไม่เกิน 1.2mV และจะนำแรงดันส่วนเกินส่งไปชาร์จที่ Cell อื่นที่มีแรงดันต่ำกว่า ทำการเหมาะกับงานที่ต้องการประสิทธิภาพสูง โดย Board บางรุ่นสามารถนำมาต่ออนุกรมกันเพื่อเพิ่มจำนวนอนุกรม Cell ได้
- Battery Management System (BMS) ทำหน้าที่เหมือน Balancerและเพิ่มส่วนของการป้องกัน Overload และหรือมี temperature Sensor ,ต่อเชื่อมกับมือถือหรือคอมพิวเตอร์เพื่อแสดงค่าต่างๆมาด้วย
วันพุธ, ธันวาคม 26, 2561
แปลงรูปเป็นข้อความ Optical character recognition (OCR) ด้วย Tesseract
ปัจจุบันการแปลงภาพเป็นข้อความมีการประยุกต์ใช้งานในหลากหลายงาน Library ที่น่าสนใจ (และมีภาษาไทยด้วย) ตัวนึงคือ Tesseract สามารถเรียกใช้งานทาง command line ก็ได้ หรือจะเขียนโปรแกรมเชื่อมกับ API มันก็ได้ เป็น open source และมีภาษาไทย ด้วยอะไรจะดีขนาดนั้น ลองมาดูกันดีกว่าว่า ติดตั้ง ใช้งาน ยังไง
1. มาติดตั้งกันเลย เลือก OS ที่เราใช้งานอยู่จากที่นี่
https://github.com/tesseract-ocr/tesseract/wiki
หรือ windows 64 bit จากที่นี่
https://github.com/UB-Mannheim/tesseract/wiki
2. จาก file ติดตั้งเราจะได้ไฟล์ Training ภาษาอังกฤษมาด้วยในการติดตั้งเลย
หลังจากติดตั้งแล้วก็ลองทดสอบกันเลย (ผ่าน Command line)
โดยใช้คำสั่ง
tesseract .\original\eng\test1.jpg .\original\eng\out1
* ได้ทั้งไฟล์ Jpeg และ PNG
จากคำสั่งนี้เป็นการทำ OCR จากไฟล์รูปใน folder \original\eng\test1.jpg
ให้ทำการแปลงเป็น text แล้วไปวางที่ .\original\eng\out1.txt
มาดูผลการรันกันดีกว่า
ภาพต้นฉบับซ้ายมือมีความชัดเจนดีมาก text ที่ได้จากการแปลงมีความถูกต้องแม่นยำเกือบ 100% ยกเว้นขนาดตัวอักษรที่ไม่เท่ากัน
แล้วถ้าภาษาไทยล่ะ ?
หากต้องการเพิ่มภาษาก็ไป download ไฟล์ Training ภาษาที่ต้องการเพิ่มได้จาก
https://github.com/tesseract-ocr/tesseract/wiki/Data-Files

Download แล้วมาวางไว้ใน Folder เดียวกับ Execute file (ตามตัวอย่างเครื่องผมคือ C:\eddy\Tesseract-OCR) เพื่อให้ Tesseract ของเรารู้จักภาษาไทย
การเรียกใช้งานก็จะต้องเพิ่ม parameter -l ตามด้วยภาษาที่ต้องการเช่น
tesseract .\original\bi_lang\test1.jpg .\original\bi_lang\out1 -l tha
หรือหากภาพของเรามีมากกว่า 1 ภาษาก็ให้ + เพิ่มเข้าไปเช่น
tesseract .\original\bi_lang\test1.jpg .\original\bi_lang\out1 -l tha+eng
มาดูผลการรันกันดีกว่า
ดูคลิปวิธีการใช้งานกันดีกว่า
1. มาติดตั้งกันเลย เลือก OS ที่เราใช้งานอยู่จากที่นี่
https://github.com/tesseract-ocr/tesseract/wiki
หรือ windows 64 bit จากที่นี่
https://github.com/UB-Mannheim/tesseract/wiki
2. จาก file ติดตั้งเราจะได้ไฟล์ Training ภาษาอังกฤษมาด้วยในการติดตั้งเลย
หลังจากติดตั้งแล้วก็ลองทดสอบกันเลย (ผ่าน Command line)
โดยใช้คำสั่ง
tesseract .\original\eng\test1.jpg .\original\eng\out1
* ได้ทั้งไฟล์ Jpeg และ PNG
จากคำสั่งนี้เป็นการทำ OCR จากไฟล์รูปใน folder \original\eng\test1.jpg
ให้ทำการแปลงเป็น text แล้วไปวางที่ .\original\eng\out1.txt
มาดูผลการรันกันดีกว่า
ภาพต้นฉบับซ้ายมือมีความชัดเจนดีมาก text ที่ได้จากการแปลงมีความถูกต้องแม่นยำเกือบ 100% ยกเว้นขนาดตัวอักษรที่ไม่เท่ากัน
แล้วถ้าภาษาไทยล่ะ ?
หากต้องการเพิ่มภาษาก็ไป download ไฟล์ Training ภาษาที่ต้องการเพิ่มได้จาก
https://github.com/tesseract-ocr/tesseract/wiki/Data-Files

Download แล้วมาวางไว้ใน Folder เดียวกับ Execute file (ตามตัวอย่างเครื่องผมคือ C:\eddy\Tesseract-OCR) เพื่อให้ Tesseract ของเรารู้จักภาษาไทย
การเรียกใช้งานก็จะต้องเพิ่ม parameter -l ตามด้วยภาษาที่ต้องการเช่น
tesseract .\original\bi_lang\test1.jpg .\original\bi_lang\out1 -l tha
หรือหากภาพของเรามีมากกว่า 1 ภาษาก็ให้ + เพิ่มเข้าไปเช่น
tesseract .\original\bi_lang\test1.jpg .\original\bi_lang\out1 -l tha+eng
มาดูผลการรันกันดีกว่า
ดูคลิปวิธีการใช้งานกันดีกว่า
วันจันทร์, พฤศจิกายน 19, 2561
ตรวจจับวัตถุด้วย Python + Tensorflow ด้วย Web camera ตอนที่ 1
บทความนี้ได้แรงบันดาลใจจากคลิปนี้
เห็นว่าน่าสนใจเอามาประยุกต์ใช้กับงานของตัวเองได้ ก่อนจะลงรายละเอียด ก่อนอื่นมารู้จักพระเอกของงานนี้ที่ขาดไม่ได้คือ Tensoflow เป็น Engine สำหรับประมวลผล Deep Learning การเลือกใช้มีทั้งแบบติดตั้งบน Server และบน Device ซึ่งหากต้องการติดตั้งบน Device ก็ให้เลือกใช้ TensorFlow Lite (แน่อนความแม่นยำก็จะลดลง) และใช้งานได้เกือบทุก platform และสนับสนุนหลายภาษาที่จะใช้ในการพัฒนาเช่น Python , C++ หรือ java และ Opensource ตั้งแต่ปี 2015
มาเริ่มกันเลยจากตัวอย่างผมทำการติดตั้งบน PC (Windows10 Pro) ให้ทำการติดตั้งตามลำดับดังนี้
1. ติดตั้ง Python ตามบทความนี้ผมใช้ Python Version 3.5.1 64bit download จากที่นี่ครับ
ทำการติดตั้งโดยเลือก Install Now หรือหากต้องการกำหนด Path ที่จะติดตั้งเองก็เลือก Customize Installation

* อย่าลืมติิ๊กที่ช่อง Add Python 3.5 to PATH เพื่อให้ตัวติดตั้งทำการ add path ลงใน System variables ให้ด้วย

2. ติดตั้ง Tenforflow โดยติดตั้งจาก Command line โดยใช้คำสั่ง
* อัพเดท pip installer ให้เป็น Version ล่าสุดด้วย (ปัจจุบัน 19/11/2018 คือ 7.1.2) เพราะจำเป็นสำหรับการติดตั้งโมดูอื่นๆ โดยใช้คำสั่ง
python -m pip install --upgrade pip
3. ติดตั้งโมดูลอื่นๆตามลำดับ
pip install tensorflow
Numpy 1.13.1 (and later versions) Install or install via pip
pip install numpy
SciPy 0.19.1 (and later versions) Install or install via pip
pip install scipy
OpenCV Install or install via pip
pip install opencv-python
Pillow Install or install via pip
pip install pillow
Matplotlib Install or install via pip
pip install matplotlib
h5py Install or install via pip
pip install h5py
Keras 2.x Install or install via pip
pip install keras
pip3 install https://github.com/OlafenwaMoses/ImageAI/releases/download/2.0.2/imageai-2.0.2-py3-none-any.whl
4. upgrade tensorflow โดยใช้คำสั่ง (บทความนี้ทดสอบด้วย version 1.4) (ปัจจุบัน 19/11/2018 latest version คือ 1.12 ตรวจสอบได้ ที่นี่ )
pip install tensorflow==1.4.0

5. บทความนี้จะทดสอบ Object Detection โดยใช้ Source เป็น webcam ซึ่งเป็นตัวอย่างที่มีโมเดลที่ทำการ train มาแล้ว Download จาก ที่นี่ หลังจาก unzip แล้ว ใช้คำสั่ง
python object_detection_webcam.py
มาดูตัวอย่างกัน
จากตัวอย่างเราสามารถนำมาต่อยอดประยุกต์ใช้งานด้านต่างๆด้วยภาษา Python ต่อไป
หมายเหตุ
check version ของ python โดยใช้คำสั่ง
python --version
check version ของ tensorflow โดยใช้คำสั่ง
pip list | grep tensorflow
ผมกำลังเขียนตอนที่ 2 เรื่อง Training Model ซึ่งเป็นหัวใจสำคัญของการทำ Object Recognition ของเราแม่นยำยิ่งขึ้น
ขอบคุณครับ
สมัครสมาชิก:
บทความ (Atom)