Mục lục:
- Bước 1: Công cụ chuyển đổi quảng cáo là gì?
- Bước 2: Tài nguyên được sử dụng
- Bước 3: ESP32 ADC
- Bước 4: Mạch được sử dụng
- Bước 5: Đăng nhập đã sử dụng
- Bước 6: Dữ liệu thu được bằng Máy hiện sóng
- Bước 7: Dữ liệu thu được bằng Oscilloscope (tệp csv trong Excel)
- Bước 8: Dữ liệu được ADC thu thập
- Bước 9: Dữ liệu được ADC thu thập - Excel
- Bước 10: So sánh các đoạn dốc Climb
- Bước 11: Cân bằng số lượng mẫu
- Bước 12: Lấp đầy khoảng trống - Đường xu hướng
- Bước 13: Điền vào khoảng trống - Đường cong đa thức bậc 2
- Bước 14: Lấp đầy khoảng trống - Đánh giá chức năng
- Bước 15: Chuyển đổi điện áp của máy hiện sóng sang giá trị tương đương để so sánh với ADC
- Bước 16: So sánh hai đường dốc đạt được
- Bước 17: Hành vi của Sự khác biệt Đọc ADC (LỖI)
- Bước 18: Hành vi khác biệt khi đọc ADC - Tìm chức năng sửa chữa
- Bước 19: Sử dụng phần mềm khác
- Bước 20: Hằng số và thiết lập ()
- Bước 21: Vòng lặp () và chức năng sửa
- Bước 22: Sử dụng chức năng hiệu chỉnh PolySolve
- Bước 23: Chụp với hiệu chỉnh - Plotter Serial
- Bước 24: Chi phí tính toán
- Bước 25: Mã kiểm tra - Thiết lập () và Bắt đầu vòng lặp ()
- Bước 26: Mã thử nghiệm - Vòng lặp () và xử lý
- Bước 27: Mã kiểm tra - Vòng lặp () - Kết quả
- Bước 28: Mã kiểm tra - Các chức năng đã sử dụng
- Bước 29: Tập tin
Video: Bạn có biết về điều chỉnh ESP32 ADC không ?: 29 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:33
Hôm nay, tôi sẽ nói về một vấn đề kỹ thuật hơn, nhưng một vấn đề mà tôi nghĩ rằng tất cả những người làm việc với ESP32 đều nên biết: vấn đề điều chỉnh đọc ADC (bộ chuyển đổi tương tự sang kỹ thuật số). Tôi thấy điều này quan trọng bởi vì khi thực hiện "phép đo", đặc biệt là với một thiết bị có đầu ra tương tự, bạn cần phải hoàn toàn chắc chắn rằng việc đọc đang được thực hiện chính xác.
Do đó, trong video ngày hôm nay, chúng tôi sẽ thực hiện các phép đo bằng cách sử dụng "bộ chuyển đổi tương tự-kỹ thuật số" của ESP32, quan sát sự khác biệt về chuyển đổi và áp dụng phương pháp điều chỉnh / hiệu chuẩn ADC.
Bước 1: Công cụ chuyển đổi quảng cáo là gì?
Bộ chuyển đổi AD là một mạch có khả năng dịch một đại lượng tương tự (liên tục) thành các giá trị kỹ thuật số (rời rạc). Điều đó nghĩa là gì? Điều đó có nghĩa là trong khi các giá trị kỹ thuật số chỉ có thể giả định các giá trị rời rạc được tạo thành bởi sự kết hợp của các số không và số một, thì một đại lượng tương tự có thể giả định bất kỳ giá trị nào trong một phạm vi. Ví dụ, nếu chúng tôi đo điện áp của một tế bào AA lý tưởng, chúng tôi có thể tìm thấy bất kỳ giá trị nào trong khoảng từ 0V đến 1,5V, vì đây là đại lượng tương tự. Trạng thái đầu ra của đèn lý tưởng chỉ phải giả định hai trạng thái (tắt hoặc mở), đó là cường độ rời rạc. Vì vi điều khiển hoạt động bằng cách sử dụng logic rời rạc này, chúng ta cần một mạch có khả năng dịch một đại lượng tương tự thành số (hoặc rời rạc).
Bước 2: Tài nguyên được sử dụng
• Một thẻ Lolin32 Lite v1.0.0
• Máy hiện sóng Tektronix TDS1001C để chụp
• Một cáp USB cho ESP32
• Máy hiện sóng Hantek DSO4102C làm bộ tạo tín hiệu
Bước 3: ESP32 ADC
Theo dữ liệu của Espressif, các chip ESP32 có thể thể hiện sự khác biệt +/- 6% giữa chip này với chip khác trong kết quả đo được.
Ngoài ra, chuyển đổi KHÔNG có câu trả lời tuyến tính cho mọi phạm vi có sẵn để đọc. Espressif cung cấp một phương pháp để hiệu chuẩn và đề nghị người dùng thực hiện các phương pháp khác nếu họ cho là cần thiết để đạt được độ chính xác mong muốn.
Chúng tôi sẽ thực hiện thu thập dữ liệu và từ đó, chúng tôi sẽ hiển thị các phản hồi của ADC và ví dụ về việc áp dụng quy trình toán học để đọc điều chỉnh.
Có một số cách (đơn giản hơn hoặc phức tạp hơn) để thực hiện các bản sửa lỗi này. Đó là vào bạn để đánh giá thích hợp nhất cho dự án của bạn.
Hình được hiển thị ở đây sẽ có mục đích minh họa và cố gắng giải quyết những điểm thú vị có thể quan sát được trong quá trình điều chỉnh.
Bước 4: Mạch được sử dụng
Tôi đã sử dụng một máy hiện sóng có bộ tạo tín hiệu lên tới 25 MHz, Hantek DSO4102C. Chúng tôi tạo ra một sóng được đọc bởi ESP A / D và máy hiện sóng. Dữ liệu thu thập được đã được ghi lại trong csv và trong một bảng tính, tôi sẽ để lại ở cuối bài viết để tải xuống.
Bước 5: Đăng nhập đã sử dụng
Chúng tôi đã chọn một tín hiệu hình thang tần số thấp cho phép truy cập vào các đường dốc chạy qua toàn bộ phạm vi chuyển đổi. Điều này cho phép một số lượng lớn các mẫu trên các đường dốc này.
Bước 6: Dữ liệu thu được bằng Máy hiện sóng
Hình ảnh chụp được thực hiện bởi máy hiện sóng. Dữ liệu đã được lưu trữ trong một tệp csv. Lưu ý độ cong nhẹ trên đường lên và xuống của tín hiệu.
Bước 7: Dữ liệu thu được bằng Oscilloscope (tệp csv trong Excel)
Chúng tôi có các mẫu ở đây.
Bước 8: Dữ liệu được ADC thu thập
Bằng cách thay đổi tốc độ truyền của nối tiếp, chúng ta có thể xem dữ liệu được ADC thu thập. Quan sát sự biến dạng của tín hiệu hình thang.
Dữ liệu được quan sát trên máy vẽ nối tiếp Arduino IDE
Bước 9: Dữ liệu được ADC thu thập - Excel
Sử dụng tỷ lệ cao hơn và thiết bị đầu cuối nối tiếp, chúng tôi có thể nắm bắt các giá trị và áp dụng chúng trong Excel để so sánh.
Bước 10: So sánh các đoạn dốc Climb
Chúng tôi so sánh hai đoạn đường leo của hai sản phẩm bắt được.
Lưu ý độ cong xảy ra trên cả hai đường dốc.
Cũng lưu ý rằng đối với cùng một đoạn đường nối, chúng tôi có nhiều mẫu của ESP32 hơn là từ máy hiện sóng.
Bước 11: Cân bằng số lượng mẫu
Vì ESP32 cung cấp số lượng mẫu lớn hơn máy hiện sóng, chúng ta cần phải cân bằng các giá trị này, vì chúng sẽ dùng làm chỉ số để so sánh hai đường cong.
Đối với điều này, chúng tôi sẽ thực hiện một so sánh trực tiếp.
Chúng tôi có 305 mẫu cho đoạn đường nối máy hiện sóng và 2365 mẫu cho đoạn đường nối ADC.
Vì các đường dốc có cùng phạm vi, chúng ta có thể nói rằng chúng ta có khoảng 7,75 mẫu ADC cho mỗi máy hiện sóng.
Nhân chỉ số của mỗi mẫu máy hiện sóng có cùng một đường cong, nhưng với các chỉ số tương đương với ADC và dữ liệu được phân phối lại.
Để điền vào dữ liệu còn thiếu cho các vị trí mới, chúng tôi sẽ áp dụng một đường cong phù hợp về mặt thống kê với dữ liệu đã biết.
Bước 12: Lấp đầy khoảng trống - Đường xu hướng
Chọn dữ liệu đã biết (chấm màu xanh), bằng cách nhấp và sau đó nhấp vào nút bên phải, chúng tôi chọn: "Thêm Đường xu hướng…"
Trong cửa sổ hiện ra, chúng ta chọn loại Đa thức (bậc 2 sẽ đủ).
Chúng tôi cũng đã kiểm tra các tùy chọn "Xem phương trình trong biểu đồ" và "Hiển thị giá trị bình phương R trong biểu đồ".
Chúng tôi nhấp vào "Đóng".
Bước 13: Điền vào khoảng trống - Đường cong đa thức bậc 2
Excel cung cấp cho chúng ta hai phần thông tin mới; phương trình bậc hai phù hợp nhất với dữ liệu và phương trình bình phương R định lượng mức độ đầy đủ này.
Chỉ cần nhớ rằng càng gần 1, phương trình càng phù hợp.
Chúng ta đừng đi sâu vào toán học liên quan, hãy chỉ sử dụng nó như một công cụ.
Bước 14: Lấp đầy khoảng trống - Đánh giá chức năng
Hãy điền vào các khoảng trống lấy mẫu bằng dữ liệu được tạo ra bởi phương trình. Và sau đó, so sánh chúng từng điểm một.
y = -9E-08x2 + 0, 0014x + 0, 1505
R² = 0, 9999
Điện áp máy hiện sóng = -9E-08 * index2 + 0, 0014 * index + 0, 1505
Bước 15: Chuyển đổi điện áp của máy hiện sóng sang giá trị tương đương để so sánh với ADC
Hãy tận dụng điều này để cũng biến đổi giá trị của điện áp dao động ký thành giá trị ADC tương đương.
Vì giá trị cao nhất thu được trong ADP của ESP32 là 4095, tương đương với giá trị đọc 2,958V cho cùng một chỉ số, chúng ta có thể nói rằng:
Mỗi vôn trong các phép đo của máy hiện sóng bằng khoảng 1384,4 đơn vị AD. Do đó, chúng ta có thể nhân tất cả các phép đo của máy hiện sóng với giá trị này.
Bước 16: So sánh hai đường dốc đạt được
Hình dung sự khác biệt thu được trong hai bài đọc.
Bước 17: Hành vi của Sự khác biệt Đọc ADC (LỖI)
Đường cong dưới đây cho thấy sự khác biệt trong số đọc ADC hoạt động như một chức năng của phép đo. Việc thu thập dữ liệu này sẽ cho phép chúng tôi tìm ra một chức năng hiệu chỉnh.
Để tìm đường cong này, chúng tôi chỉ cần vẽ biểu đồ sự khác biệt được tìm thấy trong mỗi số đo dưới dạng hàm của mỗi vị trí AD có thể có (0 đến 4095).
Bước 18: Hành vi khác biệt khi đọc ADC - Tìm chức năng sửa chữa
Chúng tôi có thể xác định trong Excel một hàm hiệu chỉnh bằng cách thêm Đường xu hướng, hiện có mức độ cao hơn, cho đến khi nó phù hợp đủ với dữ liệu của chúng tôi.
Bước 19: Sử dụng phần mềm khác
Một phần mềm thú vị khác để xác định đường cong là PolySolve, bạn có thể sử dụng trực tiếp phần mềm này tại liên kết: https://arachnoid.com/polysolve/ hoặc tải xuống dưới dạng ứng dụng Java.
Nó cho phép áp dụng các hồi quy đa thức bậc cao hơn và phân phối hàm đã định dạng, cũng như các hàm khác.
Để sử dụng nó, chỉ cần nhập dữ liệu vào hộp văn bản đầu tiên. Dữ liệu phải tuân theo thứ tự X, Y được phân tách bằng dấu phẩy hoặc tab. Hãy thận trọng trong việc sử dụng chính xác dấu chấm dưới dạng dấu thập phân.
Biểu đồ sẽ xuất hiện trong hộp tiếp theo nếu dữ liệu đã nhập được định dạng đúng.
Đây là cách đường cong lỗi ADC của chúng tôi diễn ra.
Cửa sổ này sẽ hiển thị kết quả của hồi quy, bao gồm dữ liệu về tính đầy đủ của hàm, do đó có thể có đầu ra của nó được định dạng theo một số cách: như một hàm C / C ++, một danh sách các hệ số, một hàm được viết bằng Java, v.v.
Lưu ý: Chú ý đến dấu phân cách thập phân
Bước 20: Hằng số và thiết lập ()
Tôi chỉ ra ở đây GPIO được sử dụng để bắt analog. Tôi khởi tạo cổng nối tiếp, cũng như chân được xác định để bắt analog.
const int pin_leitura = 36; // GPIO usado para captura analógica void setup () {Serial.begin (1000000); // Iniciciando một porta serial somente para debug pinMode (pin_leitura, INPUT); // Pino useizado para captura analógica}
Bước 21: Vòng lặp () và chức năng sửa
Chúng tôi thực hiện việc nắm bắt điện áp đã điều chỉnh và chúng tôi in các giá trị có hoặc không có hiệu chỉnh chính xác.
void loop () {int valor_analogico = analogRead (pin_leitura); // realiza a captura da tensão ajustada //Serial.print(valor_analogico + f (valor_analogico)); // printme os valores para debug (COM CORREÇÃO) Serial.print (valor_analogico); // printmime os valores para debug (SEM CORREÇÃO) Serial.print (","); Serial.print (4095); // cria uma linha para marcar o valor máximo de 4095 Serial.print (","); Serial.println (0); // cria uma linha para marcar o valor mínimo de 0}
Lưu ý ở dòng 12 rằng chúng ta có tùy chọn in dữ liệu với việc bổ sung hàm khác biệt f (analog_value).
Bước 22: Sử dụng chức năng hiệu chỉnh PolySolve
Ở đây, chúng tôi sử dụng chức năng PolySolve bên trong Arduino IDE.
/ * Chế độ: bậc đa thức bình thường cặp dữ liệu 6, 2365 x, y Hệ số tương quan (r ^ 2) = 9, 907187626418e-01 Sai số chuẩn = 1, 353761109831e + 01 Dạng đầu ra: Hàm C / C ++: Copyright © 2012, P. Lutus - https://www.arachnoid.com. Đã đăng ký Bản quyền. * / double f (double x) {return 2.202196968876e + 02 + 3.561383996027e-01 * x + 1.276218788985e-04 * pow (x, 2) + -3.470360275448e-07 * pow (x, 3) + 2.082790802069e- 10 * pow (x, 4) + -5.306931174991e-14 * pow (x, 5) + 4.787659214703e-18 * pow (x, 6); }
Lưu ý sự thay đổi từng dấu phẩy làm dấu phân cách thập phân.
Bước 23: Chụp với hiệu chỉnh - Plotter Serial
Bước 24: Chi phí tính toán
Để thực hiện các phép tính đa thức, bộ xử lý cần phải xử lý tác vụ này. Điều này có thể dẫn đến sự chậm trễ trong quá trình thực thi, tùy thuộc vào mã nguồn và khả năng tính toán có sẵn.
Ở đây, chúng ta thấy một bảng kết quả của một bài kiểm tra sử dụng đa thức nhiều bậc. Lưu ý sự khác biệt giữa thời điểm khi sử dụng hàm pow () và khi không sử dụng.
Bước 25: Mã kiểm tra - Thiết lập () và Bắt đầu vòng lặp ()
Ở đây, chúng tôi có mã được sử dụng trong thử nghiệm của chúng tôi.
void setup () {Serial.begin (1000000); // Iniciando a porta serial somente para debug} void loop () {float valor_analogico = 500.0; // ô valor arbtrario float quantidade = 10000.0; // quantidade de chamadas float contador = 0.0; // contador de chamadas
Bước 26: Mã thử nghiệm - Vòng lặp () và xử lý
Tôi đã sử dụng hàm micros () để nhận giá trị tính bằng micro giây.
// ============= inicia o processo float agora = micros (); // marca o Instante inicial while (contador <quantidade) {// v (valor_analogico); // função vazia // r (valor_analogico); // função com retorno // f0 (valor_analogico); // grau 0 // f1 (valor_analogico); // grau 1 // f2 (valor_analogico); // grau 2 // f3 (valor_analogico); // grau 3 // f4 (valor_analogico); // grau 4 // f5 (valor_analogico); // grau 5 // f6 (valor_analogico); // grau 6 // f13_semPow (valor_analogico); // grau 13º SEM a função POW // f13_comPow (valor_analogico); // grau 13º COM a função POW contador ++; } agora = (micros () - agora) / quantidade; // định thức o khoảng thời gian chờ đợi vượt qua cuộc gọi của cada iteração // ============= finaliza o processo
Bước 27: Mã kiểm tra - Vòng lặp () - Kết quả
Chúng tôi in giá trị trả về từ hàm lớp 13 có và không có POW để so sánh, cũng như khoảng thời gian xử lý.
// printme o valor retornado da função de grau 13 com e sem POW para comparação Serial.print (f13_semPow (valor_analogico)); // grau 13º SEM a função POW Serial.print ("-"); Serial.print (f13_comPow (valor_analogico)); // grau 13º COM a função POW Serial.print ("-"); // printme o khoảng do processamento Serial.println (agora, 6); }
Bước 28: Mã kiểm tra - Các chức năng đã sử dụng
Các hàm rỗng (chỉ với trả về) của bậc 0 và 1.
// FUNÇÃO VAZIAdouble v (double x) {} // FUNÇÃO SOMENTE COM RETORNO double r (double x) {return x; } // FUNÇÃO DE GRAU 0 double f0 (double x) {return 2.202196968876e + 02; } // FUNÇÃO DE GRAU 1 double f1 (double x) {return 2.202196968876e + 02 + 3.561383996027e-01 * x; }
Chức năng cấp 2, 3 và 4.
// FUNÇÃO DE GRAU 2double f2 (double x) {return 2.202196968876e + 02 + 3.561383996027e-01 * x + 1.276218788985e-04 * pow (x, 2); } // FUNÇÃO DE GRAU 3 double f3 (double x) {return 2.202196968876e + 02 + 3.561383996027e-01 * x + 1.276218788985e-04 * pow (x, 2) + -3.470360275448e-07 * pow (x, 3); } // FUNÇÃO DE GRAU 4 double f4 (double x) {return 2.202196968876e + 02 + 3.561383996027e-01 * x + 1.276218788985e-04 * pow (x, 2) + -3.470360275448e-07 * pow (x, 3) + 2.082790802069e-10 * pow (x, 4); }
Lớp 5 và 6 chức năng.
// FUNÇÃO DE GRAU 5double f5 (double x) {return 2.202196968876e + 02 + 3.561383996027e-01 * x + 1.276218788985e-04 * pow (x, 2) + -3.470360275448e-07 * pow (x, 3) + 2.082790802069e-10 * pow (x, 4) + -5.306931174991e-14 * pow (x, 5); } // FUNÇÃO DE GRAU 6 double f6 (double x) {return 2.202196968876e + 02 + 3.561383996027e-01 * x + 1.276218788985e-04 * pow (x, 2) + -3.470360275448e-07 * pow (x, 3) + 2.082790802069e-10 * pow (x, 4) + -5.306931174991e-14 * pow (x, 5) + 4.787659214703e-18 * pow (x, 6); }
Chức năng lớp 13 bằng cách sử dụng POW.
// FUNÇÃO DE GRAU 13 USANDO O POWdouble f13_comPow (double x) {return 2, 161282383460e + 02 + 3, 944594843419e-01 * x + 5, 395439724295e-04 * pow (x, 2) + -3, 968558178426e-06 * pow (x, 3) + 1, 047910519933e-08 * pow (x, 4) + -1, 479271312313e-11 * pow (x, 5) + 1, 220894795714e-14 * pow (x, 6) + -6, 136200785076e-18 * pow (x, 7) + 1, 910015248179e-21 * pow (x, 8) + -3, 566607830903e-25 * pow (x, 9) + 5, 000280815521e-30 * pow (x, 10) + 3, 434515045670e-32 * pow (x, 11) + -1, 407635444704e-35 * pow (x, 12) + 9, 871816383223e-40 * pow (x, 13); }
Chức năng lớp 13 mà không cần sử dụng POW.
// FUNÇÃO DE GRAU SEM USAR O POWdouble f13_semPow (double x) {return 2, 161282383460e + 02 + 3, 944594843419e-01 * x + 5, 395439724295e-04 * x * x + -3, 968558178426e-06 * x * x * x + 1, 047910519933e-08 * x * x * x * x + -1, 479271312313e-11 * x * x * x * x * x + 1, 220894795714e-14 * x * x * x * x * x * x + -6, 136200785076e-18 * x * x * x * x * x * x * x + 1, 910015248179e-21 * x * x * x * x * x * x * x * x + -3, 566607830903e- 25 * x * x * x * x * x * x * x * x * x + 5, 000280815521e-30 * x * x * x * x * x * x * x * x * x * x + 3, 434515045670e- 32 * x * x * x * x * x * x * x * x * x * x * x + -1, 407635444704e-35 * x * x * x * x * x * x * x * x * x * x * x * x + 9, 871816383223e-40 * x * x * x * x * x * x * x * x * x * x * x * x * x; }
Bước 29: Tập tin
Tải xuống các tệp:
NS
Bảng tính
Đề xuất:
Bộ điều chỉnh điện áp điều chỉnh LM317: 6 bước
Bộ điều chỉnh điện áp điều chỉnh LM317: Ở đây chúng tôi muốn nói về bộ điều chỉnh điện áp có thể điều chỉnh. Chúng yêu cầu các mạch phức tạp hơn tuyến tính. Chúng có thể được sử dụng để tạo ra các đầu ra điện áp cố định khác nhau tùy thuộc vào mạch và cũng có thể điều chỉnh điện áp thông qua chiết áp. TÔI
Tự tạo bộ điều hợp bộ Ekit cho ban nhạc rock của riêng bạn (không có bộ điều hợp kế thừa), không bị phá hủy !: 10 bước
Tự tạo bộ điều hợp bộ điều hợp băng tần Rock của riêng bạn (không có bộ điều hợp kế thừa), không bị phá hủy !: Sau khi nghe một người dẫn chương trình podcast nổi tiếng đề cập đến mối quan tâm của anh ấy về việc bộ điều hợp cũ có dây của anh ấy sắp chết, tôi đã tìm kiếm một giải pháp DIY để kết nối eKit tùy chỉnh / tốt hơn với RB . Cảm ơn Mr DONINATOR trên Youtube, người đã thực hiện một video mô tả chi tiết về p
Nguồn điện DC có thể điều chỉnh được bằng cách sử dụng bộ điều chỉnh điện áp LM317: 10 bước
Bộ nguồn DC điều chỉnh điện áp sử dụng bộ điều chỉnh điện áp LM317: Trong đồ án này, em đã thiết kế một bộ nguồn DC có điện áp điều chỉnh đơn giản sử dụng IC LM317 với sơ đồ mạch nguồn LM317. Vì mạch này có một bộ chỉnh lưu cầu có sẵn nên chúng ta có thể kết nối trực tiếp nguồn AC 220V / 110V ở đầu vào.
ESP32: Bạn có biết DAC là gì không ?: 7 bước
ESP32: Bạn có biết DAC là gì không ?: Hôm nay, chúng ta sẽ nói về hai vấn đề. Đầu tiên là DAC (Digital-to-Analog Converter). Tôi coi nó là điều quan trọng, bởi vì thông qua nó, chẳng hạn, chúng tôi tạo ra một đầu ra âm thanh trong ESP32. Vấn đề thứ hai chúng ta sẽ giải quyết ngày hôm nay là oscil
Tái chế công tắc điều chỉnh độ sáng cũ của bạn làm điều khiển nhiệt độ thay đổi cho sắt hàn của bạn: 7 bước
Tái chế công tắc điều chỉnh độ sáng cũ của bạn làm điều khiển nhiệt độ thay đổi cho bàn ủi hàn của bạn: Tôi đã thấy rất nhiều thiết bị điều khiển nhiệt độ thay đổi chuyên nghiệp cho sắt hàn, nhưng quá đắt. Vì vậy, tôi tạo ra một cái từ một công tắc điều chỉnh độ sáng cũ, ổ cắm, đĩa gang và phích cắm đã bị bỏ đi và một số hộp công tắc PVC cũ đi kèm với nó và như vậy