반응형

L293D는 다이오드가 내장된 DC모터 드라이버다.


L293D DC Motor Driver


L293D Pin Map

Enable 1, 2와 Enable 3, 4는 PWM(0~255)으로 모터 속도를 제어한다.

모터가 높은 전압을 사용한다면 Vcc 2에 외부 전원을(4.5~36V) 연결한다. (Vcc 1은 내부 로직용 전압이다)


Peak output current(nonrepetitive, t ≤ 100 µs): 1.2A

Continuous output current: 600mA

l293d.pdf


드라이버 내부에는 모터에서 발생하는 역기전력으로 인한 MCU 손상 방지용 다이오드가 내장되어 있다.

GND(4, 5, 12, 13)는 모두 연결되어 있어서 하나만 외부 GND에 연결하면 된다.



위 다이어그램과 같이 연결한다.


L293D - Arduino

Enable 1, 2 - D8

Input 1 - D9

Output 1 - Motor +

GND - GND

Output 2 - Motor -

Input 2 - D10

Vcc 2 - 5V

Vcc 1 - 5V




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
#define EN1 8
#define IN1 9
#define IN2 10
 
void setup() {
  pinMode(EN1, OUTPUT);
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);
}
 
void loop() {
  digitalWrite(EN1, HIGH);
  digitalWrite(IN1, HIGH);
  digitalWrite(IN2, LOW);
  delay(1000);
 
  digitalWrite(EN1, LOW);
  delay(1000);
 
  digitalWrite(EN1, HIGH);
  digitalWrite(IN1, LOW);
  digitalWrite(IN2, HIGH);
  delay(1000);
 
  digitalWrite(EN1, LOW);
  delay(1000);
}


위 코드를 컴파일하고 아두이노에 업로드한다. 'CW 회전 - 1초 대기 - CCW 회전 - 1초 대기'가 반복된다.


반응형
Posted by J-sean
:
반응형

MX1508 모터 드라이버로 2개의 DC모터나 1개의 스텝 모터를 컨트롤 할 수 있다.

- Supply voltage: 2~10V.

- Signal input voltage 1.8~7V.


MX1508 모터 드라이버


MX1508 드라이버 다이어그램은 아니지만 위와 같은 방식으로 연결한다.


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
29
30
31
32
33
34
35
const int IN1 = 5;
const int IN2 = 6;
const int IN3 = 9;
const int IN4 = 10;
 
void setup() {
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);
  pinMode(IN3, OUTPUT);
  pinMode(IN4, OUTPUT);
}
 
void loop() {
  CWRotation(100);
  delay(1000);
 
  CCWRotation(200);
  delay(1000);
}
 
void CWRotation(int speed)
{
  analogWrite(IN1, speed);
  digitalWrite(IN2, LOW);
  analogWrite(IN3, speed);
  digitalWrite(IN4, LOW);
}
 
void CCWRotation(int speed)
{
  digitalWrite(IN1, LOW);
  analogWrite(IN2,speed );
  digitalWrite(IN3, LOW);
  analogWrite(IN4, speed);
}


소스를 컴파일 하고 아두이노에 업로드한다. 모터가 다른 속도로 정회전, 역회전을 반복한다.


반응형
Posted by J-sean
:
반응형

평소 별 필요 없지만 언젠가는 유용하게 쓰일 수 도 있는 제품, 소형 전동 드라이버다. 데스크탑 컴퓨터 조립 시 사용하는 약간 큰 제품도 있지만 샤오미 와우스틱은 별, 삼각형등 특별한 모양의 비트가 포함되어 있기 때문에 노트북이나 핸드폰등 소형 기기 분해, 조립 시 유용하게 사용 할 수 있다.


일반 전동 드라이버


알리에서 구매한 샤오미 전동 드라이버. 전용 파우치와 함께 도착 했다.

가격은 $15.57.


한글 빼고 다 있다.


전동 드라이버와 비트 세트가 각각 포장 되어 있다.



깔끔하게 포장 되어 있다.


Specification

 Material

 Aluminum Alloy

 Battery

 2 x AAA 1.5V

 Speed

 150r/min

 Torque

 0.12/3N.m

Bit Size

(4x28mm)

PH000/ PH0/ PH2

SL1.0/ SL2.0/ SL3.0

T5/ T6/ T8 

P2/ P5/ P6 

H2.5/ H3 

SQ0/ 3.0/ Y2.5/ U3.0

 Weight

 Apprex. 240g


드라이버의 뒷부분을 열고 건전지를 넣는다.


앞부분엔 비트를 넣는다. 드라이버 바디에 있는 검정색 스위치의 아래를 누르면 시계방향으로, 위를 누르면 반시계 방향으로 회전 한다.



스펙에는 18pcs라고 적혀 있었지만 20개의 비트가 들어 있다.



비트를 장착 완료.


이렇게 전용 파우치에 보관 한다.


비트가 작기 때문에 크고 단단히 잠겨 있는 나사를 풀거나 조이기는 어렵지만 소형기기 분해, 조립시 사용하기에 충분한 힘을 낸다.


반응형
Posted by J-sean
:
반응형

USBASP로 ATtiny13을 프로그래밍 할 수 있다. Arduino를 이용한 프로그래밍과 기본적인 설정 방법은 아래 링크를 참고 한다.

 

2020/04/02 - [Raspberry Pi & Arduino] - Programming ATtiny13 with Arduino Uno - 아두이노로 ATtiny13 프로그래밍 하기

 

AliExpress에서 구매한 USBASP.

 

Adaptor와 함께 구매 했다.

 

컴퓨터에 연결 한다.

 

드라이버가 설치되지 않았다면 제대로 인식하지 못한다.

 

 

 

https://zadig.akeo.ie/

위 링크에서 Zadig를 다운 받는다.

zadig-2.5.exe
4.92MB

 

드라이버를 설치 한다.

 

장치가 제대로 인식 된다.

 

ATtiny13에 기본적인 Blink 예제를 프로그래밍 할 수 있도록 케이블을 연결 한다.

USBASP RESET - ATtiny pin 1

USBASP MOSI - ATtiny pin 5

USBASP MISO - ATtiny pin 6

USBASP SCK - ATtiny pin 7

USBASP 5V - ATtiny pin 8

USBASP GND - ATtiny pin 4

 

Optional:

ATtiny pin4(GND) - Negative side of the LED

ATTiny pin 3 - Resistor (330 Ohm) - Positive side of the LED

 

 

 

프로그램을 컴파일 하고 업로드 해도 warning이 발생하고 제대로 작동 하지 않는다. USBASP의 Firmware를 업데이트 해야 한다.

 

https://sourceforge.net/projects/ardude/

위 링크에서 Arduino AVR Dude Programmer를 다운 받고 설치한다. (설치하지 않고 cab 파일의 압축만 풀어도 상관 없다)

Arduino AVR Dude Programmer.zip
1.99MB

 

https://www.fischl.de/usbasp/

위 링크에서 usbasp.2011-05-28.tar.gz를 다운 받고 압축을 풀어서 usbasp.atmega8.2011-05-28.hex파일을 Arduino AVR Dude Programmer가 있는 폴더에 복사 한다. (USBASP의 칩셋이 ATMEGA8인지 확인 한다)

usbasp.2011-05-28.tar.gz
0.51MB

 

컴퓨터에 Arduino만 연결한 상태에서 File - Examples - 11. ArduinoISP - ArduinoISP를 컴파일 하고 업로드 한다.

 

 

 

 

USBASP의 Firmware를 업데이트 할 수 있도록 케이블을 연결 한다.

USBASP RESET - Arduino pin 10

USBASP MOSI - Arduino pin 11

USBASP MISO - Arduino pin 12

USBASP SCK - Arduino pin 13

USBASP 5V - Arduino 5V

USBASP GND - Arduino GND

 

Arduino RESET - (+) 10㎌ Capacitor (-) - Arduino GND (Capacitor를 연결하지 않으면 Firmware 업데이트가 제대로 되지 않는다)

USBASP JP1(JP2로 표시된 제품도 있다) 연결

 

avrdude가 있는 폴더(Arduino AVR Dude Programmer를 설치한 폴더)로 이동 해서 아래 명령어를 실행 한다.

avrdude -C avrdude.conf -c avrisp -P COM3 -b 19200 -p m8 -v

(COM 포트는 실제 포트를 적어준다.)

 

이상이 없다면 AVR device initialized and ready to accept instructions라는 메세지가 나온다.

 

아래 명령어를 실행 한다.

avrdude -C avrdude.conf -c avrisp -P COM3 -b 19200 -p m8 -U flash:w:usbasp.atmega8.2011-05-28.hex

Verify까지 완료되면 USBASP의 Firmware 업데이트가 끝난다.

 

USBASP로 Blink 예제를 프로그래밍 할 수 있도록 케이블을 다시 연결 한다.

USBASP RESET - ATtiny pin 1

USBASP MOSI - ATtiny pin 5

USBASP MISO - ATtiny pin 6

USBASP SCK - ATtiny pin 7

USBASP 5V - ATtiny pin 8

USBASP GND - ATtiny pin 4

 

Optional:

ATtiny pin 4(GND) - Negative side of the LED

ATTiny pin 3 - Resistor (330 Ohm) - Positive side of the LED

 

 

 

Programmer: "USBasp (slow)"로 설정 한다. USBasp로 설정 하면 에러가 발생 한다.

 

컴파일 하고 업로드 한다.

 

ATtiny13에 프로그램이 업로드 되고 정상 작동 한다.

 

반응형
Posted by J-sean
:
반응형

Selenium과 Chrome driver를 이용해 웹싸이트에서 로그인이 필요한 정보를 가져 올 수 있다.

아래 코드는 인터넷 서점(Yes24)에 접속해서 로그인 하고 주문 내역을 가져 온다.

Chrome이 동작하는걸 보고 싶다면 options 관련 부분만 삭제하면 된다.

 

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
29
30
31
32
33
34
35
36
37
38
39
40
from selenium import webdriver
 
login_url = "https://www.yes24.com/Templates/FTLogin.aspx"
id = "아이디"
password = "패스워드"
 
options = webdriver.ChromeOptions()
options.add_argument("headless"# headless 모드
options.add_argument("window-size=1920x1080"# headless 모드가 아니면 의미가 없는거 같다.
options.add_argument("--log-level=3"# 이 코드가 없으면 headless 모드시 log가 많이 표시 된다.
 
#driver = webdriver.Chrome("c:\download\chromedriver.exe", options = options)
driver = webdriver.Chrome(options = options) # webdriver와 소스가 같은 폴더에 있을 때.
driver.implicitly_wait(3)
driver.get(login_url)
print("Title: %s\nLogin URL: %s" %(driver.title, driver.current_url))
 
id_elem = driver.find_element_by_id("SMemberID")
id_elem.clear()
id_elem.send_keys(id)
 
driver.find_element_by_id("SMemberPassword").clear()
driver.find_element_by_id("SMemberPassword").send_keys(password)
# clear()와 send_keys()는 None을 리턴 한다.
 
login_btn = driver.find_element_by_xpath('//*[@id="btnLogin"]')
login_btn.click() # None 리턴
# driver.find_element_by_xpath('//*[@id="btnLogin"]').click()
 
list_url = "https://ssl.yes24.com//MyPageOrderList/MyPageOrderList"
driver.get(list_url)
 
print("-" * 30"Order list""-" * 30)
lists = driver.find_elements_by_css_selector("#MyOrderListTbl span")
for i, item in enumerate(lists):
    print("%d: %s" %(i + 1, item.text))
 
driver.save_screenshot("screenshot.png")
 
#driver.quit()
cs

 

 

38번 라인에서 캡쳐한 'screenshot.png'

 

 

※ Selenium Documentation

 

반응형
Posted by J-sean
: