Cấu tạo
- Biến áp được cấu tạo bao gồm một lõi thép được chèn chặt trong ống các tông cách điện và được quấn các cuộn sơ cấp và thứ cấp quanh lõi.
- Cuộn thứ cấpcó nhiều vòng, gấp khoảng 100 lần cuộn sơ cấp.
- Một đầu của cuộn thứ cấp nối với các bugi đánh lửa và đầu còn lại nối với IC. - Tồn bợ khới gờm các c̣n dây và lõi thép đó được đặt trong ống thép từ, ghép bằng những lá thép biến thế uốn cong theo mặt trụ hở và các khe hở của những lá thép này đặt chệch nhau.
- Tất cả được đặt trong vỏ thép và cách điện ở phía đáy bằng miếng sứ, nắp được dùng là nắp cách điện với vật liệu cách điện cao cấp.
- Trước đây các biến áp đánh lửa ô tô có đở dầu biến thế để tăng tính an tồn của biến áp, nhưng khó làm kín.
- Hiện nay, các biến ápe ít nóng hơn do được điều khiển thời gian ngậm điện bằng điện tử.
- Ngoài ra nó cũng được tăng cường độ dòng ngắt và giảm độ tự cảm cuộn dây sơ cấp để đảm bảo năng lượng đánh lửa lớn ở tốc độ cao.
- Vì vậy các biến áp đánh lửa ngày nay có kích thước rất nhỏ, có mạch từ kín và không cần dầu biến áp để giải nhiệt.
Nguyên lí hoạt động
Dòng điện trước tiên sẽ đi qua cuộn sơ cấp, và sẽ bị ngắt đột ngột do má vít bị mở ra. Dòng điện trong cuộn sơ cấp sẽ bị mất đi , từ trường do chính nó sinh ra bị giảm mạnh.
Theo nguyên lý cảm ứng điện từ thì cuộn thứ cấp sẽ tự sinh ra dòng điện để có thể chống đỡ được sự biến đổi trong từ trường.
Vì số vòng trên cuộn thứ cấp lớn hơn rất nhiều so với số vòng sơ cấp nên dòng điện cuộn thứ cấp sinh ra sẽ vô cùng lớn.Dòng điện này sẽ được chuyển tới bugi bởi bộ chia điện
j) Bugi
Điện thế cao trong cuộn thứ cấp làm phát sinh ra tia lửa giữa điện cực trung tâm và điện cực nối đất của bugi để đốt cháy hỗn hợp khơng khí-nhiên liệu đã được nén trong xy-lanh.
Hình 3. 26 Cơ cấu đánh lửa của bugi
Sự nổ của hỗn hợp không khí-nhiên liệu do tia lửa từ bugi được gọi chung là sự bùng cháy.
Tuy nhiên, sự bùng cháy không phải xẩy ra tức khắc, mà diễn ra như sau.
Tia lửa xuyên qua hỗn hợp không khí-nhiên liệu từ điện cực trung tâm đến điện cực tiếp đất. Kết quả là phần hỗn hợp không khí-nhiên liệu dọc theo tia lửa bị kích hoạt, phản ứng hố học (ơxy hố) xảy ra, và sản sinh ra nhiệt để hình thành cái gọi là “nhân ngọn lửa”.
Nhân ngọn lửa này lại kích hoạt hỗn hợp không khí-nhiên liệu bao quanh, và phần hỗn hợp này lại kích hoạt chung quanh nó. Cứ như thế nhiệt của nhân ngọn lửa được mở rộng ra trong một quá trình được gọi là lan truyền ngọn lửa để đốt cháy hỗn hợp khơng khí-nhiên liệu.
Nếu nhiệt đợ của các điện cực quá thấp hoặc khe hở giữa các điện cực quá nhỏ, các điện cực sẽ hấp thụ nhiệt toả ra từ tia lửa. Kết quả là nhân ngọn lửa bị tắt và động cơ không nổ.
Hiện tượng này được gọi là sự dập tắt điện cực. Nếu hiệu ứng dập tắt điện cực này lớn thì nhân ngọn lửa sẽ bị tắt. Điện cực càng bé thì hiệu ứng dập tắt càng nhỏ. Và điện cực càng vuông thì càng dễ phóng điện.
Một số bugi có rãnh chữ “U” trong điện cực tiếp đất, hoặc rãnh chữ “V” trong điện cực trung tâm để tăng độ đánh lửa.
Những bugi này có hiệu ứng dập tắt thấp hơn các bugi không có rãnh trong điện cực; chúng cho phép hình thành những nhân ngọn lửa lớn. Ngồi ra, mợt sớ bugi còn giảm hiệu ứng dập tắt bằng cách sử dụng những điện cực mảnh.
3.3 Thiết kế mô hình
Mô hình hoạt động dựa trên chương trình code đã được lập trình trước đó dưới sự điều khiển và xử lý thông tin qua Arduino mega 2560.Sự điều chỉnh góc đánh lửa
dựa trên các thông số được đưa vào chương trình code để điều chỉnh thời điểm, góc đánh lửa sao cho phù hợp nhất.
Khi hoạt động Arduino nhận tín hiệu truyền về từ các cảm biến như tốc độ motor, nhiệt độ, kích nổ, biến trở điều khiển thay đổi tốc độ và giả lập tải của động cơ từ đó dựa trên thông số đã được đưa vào chương trình code để điều khiển góc đánh lửa sớm như đã thiết kế.
Hình 3. 27 Tiến hành xác định vị trí cố định các chi tiết
Hình 3. 28 Cố định các chi tiết lên mô hình
Hình 3. 30 Mơ hình hồn chỉnh
3.4 Sơ đồ mạch điện của mô hình điều khiển góc đánh lửa
Hình 3. 32 Sơ đồ mạch điện mô hình điều khiển góc đánh lửa động cơ Nguyên lý làm việc Nguyên lý làm việc
Khi cấp nguồn cho mô hình hoạt động thì Arduino sẽ nhận và xử lí các tín hiệu từ các cảm biến như tín hiệu tốc độ động cơ điện gửi về cảm biến tốc độ NJK5002C, tín hiệu nhiệt độ của cảm biến nhiệt độ nước làm mát, tín hiệu kích nổ, tín hiệu thay đổi tốc độ và giả lập độ mở bướm ga (tải) của biến trở. Từ những cơ sở lý thuyết ban đầu được lập trình cho Arduino thì Arduino sẽ đóng vai trò thay thế cho ECU động cơ để xử lí tín hiệu và điều khiển thay đổi góc đánh lửa sao cho tối ưu nhất với các chế độ làm việc khác nhau.
Hình 3. 33 Sơ đờ thuật tốn điều khiển Lập trình điều khiển
Sử dụng phần mềm Arduino IDE để lập trình cho Arduino. Arduino IDE là một phần mềm mã nguồn mở chủ yếu được sử dụng để viết và biên dịch mã vào module Arduino. Đây là một phần mềm Arduino chính thức, giúp cho việc biên dịch mã trở nên dễ dàng mà ngay cả một người bình thường không có kiến thức kỹ thuật cũng có thể làm được. Nó có các phiên bản cho các hệ điều hành như MAC, Windows, Linux và chạy trên nền tảng Java đi kèm với các chức năng và lệnh có sẵn đóng vai trò quan trọng để gỡ lỗi, chỉnh sửa và biên dịch mã trong môi trường. Có rất nhiều các module Arduino như Arduino Uno, Arduino Mega, Arduino Leonardo, Arduino Micro và nhiều module khác. Mỗi module chứa một bộ vi điều khiển trên bo mạch được lập trình và chấp nhận thông tin dưới dạng mã. Mã chính, còn được gọi là sketch, được tạo trên nền tảng IDE sẽ tạo ra một file Hex, sau đó được chuyển và tải lên trong bộ điều khiển trên bo. Môi trường IDE chủ yếu chứa hai phần cơ bản: Trình chỉnh sửa và Trình biên dịch, phần đầu sử dụng để viết mã được yêu cầu và phần sau được sử dụng để biên dịch và tải mã lên module Arduino. Môi trường này hỗ trợ cả ngôn ngữ C và C ++.
CHƯƠNG 4: THỰC NGHIỆM VÀ ĐÁNH GIÁ KẾT QUẢ
Nhóm chúng em đã cho mô hình hoạt động thực nghiệm ở tất cả các chế độ như trong bảng số liệu đề ra ban đầu và nhận thấy rằng mô hình hoạt động đúng như tính tốn thiết kế. Dưới đây là mợt sớ hình ảnh kết quả trong quá trình thực nghiệm
Chế độ tải là 0%, tốc độ < 1500v/p thì góc đánh lửa đang là 18 độ.
Chế độ tải 20%, tốc độ 1500-3000v/p thì góc đánh lửa là 31,75 độ.
Chế độ tải 40%, tốc độ 1500-3000v/p, thì góc đánh lửa là 32,75 độ
Chế độ tải 40%, tốc độ 1500-3000v/p, thì góc đánh lửa là 32,75 độ
Chế độ tải 100%, tốc độ > 7500v/p, thì góc đánh lửa là 34,66 độ.
Qua những hình ảnh trong quá trình hoạt động thì ta nhận thấy mô hình hoạt động đúng theo những thông số ban đầu chọn, với những ảnh hưởng của tốc độ, mức độ tải, nhiệt độ nước làm mát và cảm biến kick nổ sẽ làm cho góc đánh lửa thay đổi từ đó làm tối ưu góc đánh lửa từ đó cải thiện được công suất cơ
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
Qua quá trình thực hiện và hoàn thiện đề tài nhóm có rút ra được một số kết luận về đề tài như sau:
Mô hình tự động điều khiển thay đổi góc đánh lửa phù hợp với tốc độ và tải như thông số đề ra ban đầu.
Mô hình giảm được góc đánh lửa khi xảy ra hiện tượng kích nổ. Bên cạnh đó có thể tăng, giảm được góc đánh lửa khi thay đổi nhiệt độ.
Hướng phát triển:
Vì còn hạn chế về thời gian và năng lực nên đề tài chỉ dừng ở mức nghiên cứu chế tạo mô hình hoạt động được trên cơ sở lý thuyết chứ chưa thực nghiệm thực tế trên một động cơ. Trong tương lai có thể phát triển đề tài theo các hướng như:
Đĩa phát tín hiệu có nhiều răng để Arduino có thể tính toán góc đánh lửa nhanh và chính xác hơn
Biên độ của các dải tốc độ và tải nhỏ lại để tối ưu và phù hợp với chế độ hoạt động thực tế của động cơ
Lắp đặt hồn chỉnh trên đợng cơ thực tế để có thể đánh giá được hiệu quả, từ đó phát triển thành sản phẩm thương mại.
TÀI LIỆU THAM KHẢO
[1] Tài liệu “kết cấu động cơ đốt trong”,ThS.Nguyễn Lê Châu Thành. [2] Lê Đức Thắng “Tổng quan về hệ thống đánh lửa trên ô tô”, 2020. [3] Vương Ngọc Sang “Thiết kế hệ thống đánh lửa trên ô tô”
PHỤ LỤC
TCCR1B = _BV(CS00) | _BV(CS01); //Prescale = 64, but a little faster, maybe
TIMSK1 |= (1 << OCIE1A); // enable timer compare interrupt: sei(); // enable global interrupts:
}
//----------------------------------------------------------------------- //Interrupt 0 ISR
//Capture the 3 South Hall Semsor Falling Pulse for use in reading RPMs //Not used at present
//----------------------------------------------------------------------
void beam_interrupt() //Capture 3 South magnets, Hall Effect sensor Falling pulse,
{
++_hits;
}
//Interrupt 1 ISR
//Capture the North Hall Sensor signal for use in trigger signal and also //use it in reading RPMs
//------------------------------------------------------------------------ void beam_interruptN()
{
//Develop "oneDegree" by counting the time between N Magnets on the rotor //This is THE KEY value I use to calculate ignition timing and rpm
unsigned long etCorrected =elapsedTime +1980; oneDegree = etCorrected/360.0;
previousStartTime = currentMicros;
//Start timer1, using Prescale value of 64 TCCR1B = _BV(CS00) | _BV(CS01);
}
//--------------------------------------------------
//Timer1 Compare Match ISR: This routine fires at the end of the icnition timing delay period
ISR(TIMER1_COMPA_vect) {
//global disable interrupts cli();
TCCR1B &= ~(_BV(CS10) | _BV(CS11) | _BV(CS12)); // Stop the counter TCNT1 = 0; //Rest the counter to zero
digitalWrite(7, !digitalRead(7)); //This line is here for debugging, only to toggle an LED on Pin 7
//whenever timer1 reaches compare match to prove that the timer IS working
makeSparks(); //Coil charging function. sei(); //Global enable interrupts
}
//-------------------------------------------------------------------------------
//times out, and ends with a spark and a Strobe LED void makeSparks()
{
if(sparkOn) {
digitalWrite(triggerPin, HIGH); //This is where coil charging begins
delayMicroseconds(3000); //This fixes Coil Charge peroid at 3 milliseconds (strobe 50 usec + 2950 usec)
digitalWrite(triggerPin, LOW); //This is where the spark actually occurs.
digitalWrite(strobeLed, HIGH);
delayMicroseconds(50); //This is the on-period for the strobe. digitalWrite(strobeLed, LOW);
} }
//--------------Main Loop To Calculate RPM, Update LCD Display and Serial Monitor------ ----------
void loop() {
//Beginning of Code to measure loop time unsigned long startLoopCount = micros(); //End of Code to measure loop time
rpm =1000000 * 60/(oneDegree * 360); // time for one revolution;
advance = ((((180 + sparkTimingDegrees)* oneDegree)-3000)/4); //This divide by 4 works well,
// displayRPM_LCD(); //Only turned on for testing. Takes too long!!! displayRPM_Serial(); //Much shorter than I2C LCD.
//Ignition delay calculations here: //---------------------------------
if (rpm <130) {
//0 to 100 rpms; too slow, no sparks sparkOn = false; sparkTimingDegrees = 10; } else if (rpm < 1001) {
// 101 to 1000 rpms; cranking, make 10 degree retarded sparks advancePeriod = (oneDegree * 10); sparkOn = true; sparkTimingDegrees = 10; } else if (rpm < 2600) {
// 1001 to 5600 rpms; running okay, make 20 degree advanced sparks advancePeriod = (oneDegree *-20);
sparkOn = true;
sparkTimingDegrees = -20; }
else
if (rpm < 2900) {
//retard spark to 40 degrees advancePeriod = (oneDegree * 40); sparkOn = true; sparkTimingDegrees = 40; } else if (rpm < 3000) //if (advanceRange <(5172 - 20))
{// 5801 to infinity rpms; hard overspeed range; no sparks //sparkOn = false;
sparkTimingDegrees = 60; }
//End ignition delay code //-----------------------
//Last part of Code to measure loop time unsigned long end = micros();
delta = end - startLoopCount;
//End of Code to measure loop time }
//------------------------------------------------------------