Quantcast
Channel: Power management forum - Recent Threads
Viewing all 35901 articles
Browse latest View live

BQ27520-G4: bq27520-G4 is damaged when BI/TOUT pin is shorted to VSS?

$
0
0

Part Number:BQ27520-G4

Hi,

Now my customer simulate failure case when each pins are shorted due to soldering failure. Specifically will bq27520-G4 be damaged when BI/TOUT pin is shorted to VSS? I know that the pulse voltage is output from BI/TOUT pin that is regulated from internal LDO, so I guess that it will be safe if internal LDO has current limit.

Best Regards,

Sonoki / Japan Disty


BQ20Z75-V180: BQ20Z75-V180 shows incorrect SOC on a fresh pack

$
0
0

Part Number:BQ20Z75-V180

I have a pack model using the BQ20Z75-V180 and Panasonic UR18650A cells. Packs in previous builds would "wake" at around 50% RSOC. Panasonic is now shipping these cells to be compliant with the new transport requirement to be "less than 30% SOC" for air transport.

The cells in my most recent production lot measure around 20% SOC when discharged, however, when the pack "wakes up" it is showing 0% RSOC.

Is this because it does not like the OVC that it sees when it wakes up? If so, is there any way to change this?

Thanks,

Larry

BQ33100: BQ33100 with EV2300 firmware flashing

$
0
0

Part Number:BQ33100

I would like to know the firmware flashing procedure when flashing a srec using the bq gas gauge evaluation software. When on the pro screen, I pick my file, hit program and receive this error. "Device not in ROM".

Thanks

Diarra Anderson 

BQ34Z100EVM: bq34z100evm zero state of charge

$
0
0

Part Number:BQ34Z100EVM

Hello,

I am running bqStudio (version 1.3.54) on a 64-bit Windows 7 PC. I have the PC connected to an EV2300 (version 3.1r) which is connected through I2C to a bq34z100evm (firmware 0100_0_16). I have the BAT+/BAT- pins connected to the +/- terminals of a 12 V lead acid battery (7 Ahr). 

I am reading an accurate voltage (but zero current because I do not have a load connected to the battery I presume), but I am getting a reading for SOC of 0%. I must have missed something/done something wrong when I set my parameters. Can somebody please double check my parameters to see hat I have done wrong (see pics below: I am showing my configuration settings and the gas gauging settings)? Does IT need to be enabled to get a SOC reading?

Thanks so much. I am very pleased with TI's customer support (especially Tom Cosby!).

  

supply current of sleep mode in bq40z50r1

$
0
0

Hi, All

In my case, the supply current of sleep mode is a little bigger the spec.  

When the Chg_FET=On % Dsg_FET = On, the current is about 120uA.  In this situation, the typical value in spec is about 75uA

When the Chg_FET=Off % Dsg_FET = Off, the current is about 80uA. In this situation, the typical value in spec is about 52uA

Below is the my gg file.(Please visit the site to view this file)

Another ,when the IC in removealbe mode, CHG_FET can not be off during sleep mode.  It seems unreasonable.

BR

J.C Chen

GPCCHEM: Accuracy Error - Are LiFePO4 chemistries included in the calculator?

$
0
0

Part Number:GPCCHEM

My company has been building a gas gauging circuit utilizing the bq34z100-G1 chip for the last year for our LiFePO4 battery.  Early on I worked with Tom Cosby and based on our logged data he said that ChemID 457 was an acceptable match.  Now that we have our first batch of production hardware I want to create a new Golden Image file and came across this new tool.  I figured maybe the ChemID database has been updated in the last year so I submitted our logged data to see if there was a closer match. 

The report I get back has the closest match with a >13% error, but what is especially puzzling is that all of the matches are of different chemistries with much higher cell voltages than out LiFePO4 chemistry.  I don’t believe there is anything wrong with my data which was logged through bqStudio.  Here is my config text and an example of a few rows of data:

ProcessingType=2

NumCellSeries=1

ElapsedTimeColumn=0

VoltageColumn=1

CurrentColumn=2

TemperatureColumn=3

 

4.002

2632

0

22.4

8.002

2632

0

22.4

12.002

2632

0

22.4

16.003

2749

751.6

22.4

20.003

2810

940

22.4

24.003

2851

1005.4

22.4

28.004

2876

1005.6

22.4

 

 

 

 

Does anything jump out as being incorrect with the above info.  Are the LiFePO4 chemistries included in the GPCCHEM tool?

Thank you!

BQ27421-G1: BQ27421-G1A: the warning messages in bqStudio

$
0
0

Part Number:BQ27421-G1

About the TI BQ27421-G1A gauge IC on the PCB.A, we generated the golden image (*.gm.fs) based on the *.gg file with bqStudio.

1) When we import the *.gg file, the bqStudio displayed the warning messages in 2 dialog boxes.

1-1) Are the warning messages in the 2 dialog boxes OK?
1-1-1) Can we ignore the warning messages in the 2 dialog boxes and generate the golden image?

1-2) About the content of the *.gg file, please refer as follows:

[Header]
GaugeStudio Version = 1.4.1.0
DeviceName = bq27421-G1A 1.09
Time = 11/10/2016 9:49:06 AM

[Safety(Configuration)]
Over Temp = 45.0
Under Temp = 0.0
Temp Hys = 5.0

[Charge Termination(Configuration)]
Min Taper Capacity = 25
Current Taper Window = 40
TCA Set % = 99
TCA Clear % = 95
FC Set % = -1
FC Clear % = 98
DODatEOC Delta T = 5.0

[Data(Configuration)]
Initial Standby = -5
Initial MaxLoad = -2000

[Discharge(Configuration)]
SOC1 Set Threshold = 10
SOC1 Clear Threshold = 15
SOCF Set Threshold = 2
SOCF Clear Threshold = 5

[Registers(Configuration)]
OpConfig = 0DF9
OpConfigB = 0F
DF Version = 0

[Power(Configuration)]
Hibernate I = 3
Hibernate V = 2500
FS Wait = 1

[IT Cfg(Gas Gauging)]
Sec. Relax Time = 30
Average Time = 8
Min DOD Res Update = 70
Max Res Factor = 20
Min Res Factor = 5
Ra Filter = 800
Max V Delta = 10
Fast Qmax Start DOD % = 92
Fast Qmax End DOD % = 96
Fast Qmax Start Volt Delta = 125
Fast Qmax Current Threshold = 4
Fast Qmax Min Points = 3
Qmax Capacity Err = 1.5
Max Qmax Change = 20
Qmax Max Delta % = 10
Max % Default Qmax = 120
ResRelax Time = 500
User Rate-mW = 0
Reserve Cap-mWh = 0
Max Sim Rate = 1
Min Sim Rate = 20
Ra Max Delta = 11
Min Delta Voltage = 0
Max Delta Voltage = 200
DeltaV Max dV = 100
TermV Valid t = 2

[Current Thresholds(Gas Gauging)]
Dsg Current Threshold = 930
Chg Current Threshold = 930
Quit Current = 1860
Dsg Relax Time = 60
Chg Relax Time = 60
Quit Relax Time = 1
Transient Factor Charge = 179
Transient Factor Discharge = 179
Max IR Correct = 400

[State(Gas Gauging)]
Qmax Cell 0 = 13470
Update Status = 00
Reserve Cap-mAh = 0
Load Select/Mode = 01
Q Invalid MaxV = 3803
Q Invalid MinV = 3752
Design Capacity = 9300
Design Energy = 4960
Default Design Cap = 1340
Terminate Voltage = 2500
SOCI Delta = 1
Taper Rate = 563
Taper Voltage = 4100
Sleep Current = 10
V at Chg Term = 4195
Avg I Last Run = -50
Avg P Last Run = -7
Delta Voltage = 1

[R_a RAM(Ra Tables)]
Cell0 R_a 0 = 137
Cell0 R_a 1 = 137
Cell0 R_a 2 = 129
Cell0 R_a 3 = 137
Cell0 R_a 4 = 97
Cell0 R_a 5 = 83
Cell0 R_a 6 = 91
Cell0 R_a 7 = 97
Cell0 R_a 8 = 86
Cell0 R_a 9 = 80
Cell0 R_a 10 = 107
Cell0 R_a 11 = 127
Cell0 R_a 12 = 253
Cell0 R_a 13 = 665
Cell0 R_a 14 = 1057

[Data(Calibration)]
Board Offset = 0.0
Int Temp Offset = 0.0
Pack V Offset = -1

[CC Cal(Calibration)]
CC Offset = 0.000
CC Cal Temp = 301.6
CC Gain = 13.660
CC Delta = 13.603

[Current(Calibration)]
Deadband = 5
RDL Tempco = 0.00039

[Codes(Security)]
Sealed to Unsealed = 80008000

1-3) The warning messages in the first dialog box:
Please refer to the picture below.


1-4) The warning messages in the second dialog box:
Please refer to the picture below.

Thank you.

BQ40Z50-R1: bq40z50-R1 / VSS pin connection

$
0
0

Part Number:BQ40Z50-R1

Hi,

This may be basic question about battery pack. Basically VSS pin is connected to cell -, but in this case, the supply current of bq40z50-R1 is not flowed sense resistor so supply current can't be measured. I understand that this should be current measurement error but it's very small (tens of uA) so this error is ignored. Is my understanding correct?

Best Regards,

Sonoki / Japan Disty


BQ27421-G1: BQ27421-G1A: the generation of golden image

$
0
0

Part Number:BQ27421-G1

About the BQ27421-G1A, as we know, the procedures for the generation of golden image (*.gm.fs) are listed as follows:

1) The procedures for the generation of golden image (*.gm.fs) based on the calibration result (*.gg file)

1-1) Connect the device with EV2400. And then, run the bqStudio.

1-2) In the bqStudio

1-2-1) Click the "Data Memory", and click "Import" button to import the *.gg.csv file.

1-2-2) In the "Preferences", in the "Golden Image", clear the "Class Names to be Preserved in GMFS Files" field to be empty.

1-2-3) Click "Write All" ,and then, wait couple seconds.

1-2-4) Click "Read All" ,and then, wait couple seconds.

1-2-5) Click "Golden Image" button and press "Create Image Files" button.

1-2-6) Then, the golden image (*.gm.fs) is generated in the local drive.

Are the procedures above correct?

Thank you.

BQ27510-G3: DFI flash flow during production

$
0
0

Part Number:BQ27510-G3

Hi everyone,

I'm currently preparing the necessary steps for flashing the bq27510-g3 during production. We want to flash the derived DFI file from future learning cycles with our microcontroller and I've let bqstudio create an example df.fs file from the current configuration on the IC just to have a look. The contents seem pretty straight forward, however, while looking at the flowchart in figure 9 of slua449f, I'm under the impression that the process there does not really portray the commands in the data image file. Am I missing something here? Some clarification is highly appreciated!

Best regards

BQ34Z100-G1: problem with optimization cycle

$
0
0

Part Number:BQ34Z100-G1

Hello, 

I just ran my first test optimization cycle, but I noticed the OCVTAKEN bit in the Flags register did not set after the first charge cycle (see step 4 below). It was later determined that the battery was no good, but I am wondering if these two things are related. Here is my log file (see below). I ended the test early because the battery was determined to be bad, but I am wondering why the OCVTAKEN bit was not set. Here are the steps I was following.

  1. Configure the dataflash with appropriate parameters suitable for your application; configure pack's chemistry and perform calibration;
  2. Activate impedance track;
  3. Charge the pack to charge termination;
  4. Allow the pack to rest until the OCVTIAKEN flag sets;
  5. Discharge the pack at a C/10 to C/5 rate to the Termination Voltage;
  6. Allow the pack to rest until the OCVTAKEN flag sets. Qmax should update and Update Status should increment to 05;
  7. Fully charge the pack to charge termination;
  8. Allow the pack to rest until the OCVTAKEN flag sets;
  9. Discharge the pack at a C/10 to C/5 rate to the Termination Voltage;
  10. Allow the pack to rest until the OCVTAKEN flag sets. The Ra table should update and Update Status should increment to 06.

(Please visit the site to view this file) 

BQ27426: Clarification on BlockDataChecksum

$
0
0

Part Number:BQ27426

Hello,


I'm trying to get the RAM save/restore code for the BQ27426 working (in particular, I'm trying to store the State and Ra subclasses to nonvolatile memory, and then write them back to the device). I think I got the process working correctly, but I'm still not sure on how the checksum works.

The Technical Reference says BlockDataChecksum holds the LSB of the sum of the 32 bytes currently addressable from 0x40 to 0x5F, and that I should write the complement of the checksum (255 - (checksum & 0xFF)) after writing to transfer that data to RAM. There are examples in that document that show how to calculate the new checksum by reading the old one and reading that old data that is going to be replaced, but I'd like to avoid that, if at all possible. I'd also like to be able to check that the data that I've read is correct by calculating a checksum on my end.

I'm specially unsure as to how this all works because both the State and Ra subclasses are less than 32 bytes long (31 and 30, respectively). Should I add padding and write/read the whole 32 bytes? Do I need to wait for some time after setting the subclass and offset for the data to be readable and the checksum to be calculated, or can I start reading/writing right away? Right now I'm reading the 31 bytes of the State subclass immediately after setting the subclass and offset, calculating the checksum (by adding all of the bytes and then taking the LSB), and it doesn't match the value of BlockDataChecksum.

Thanks!

BQ34Z100-G1 Learning Cycle - Learned Status won't update to 0x05

$
0
0

Part Number:BQ34Z100-G1

We have been following the learning cycle as described in a previous post. We are able to fully charge our pack and the OCVTAKEN flag is set at which point we start the discharge cycle. This is where we have tried a couple of different things without success:

We fully discharged the batteries ~600 mV below the 'Cell Terminate Voltage'

- at a rate of C/20 (as suggested by this post) AND

- at a C/8 rate as suggested by the initial post

We waited until the OCVTAKEN updated but neither QMax updates nor Learned Status changes to 0x05.

Is there something we may have set incorrectly that could prevent this update? We do have a leakage current that we can't control as it is an always ON device (battery is the backup source), could this be the issue?

I've gone through a few of the posts and tried a few other things without success. Any advice would be appreciated, logs for the latest discharge, charge, discharge cycles are attached.

(Please visit the site to view this file)

BQ27426: Inconsistencies on the TRM

$
0
0

Part Number:BQ27426

Hello,

I'm trying to set my custom values for certain fields, such as the Design Capacity, Design Energy, etc, but I just encountered an issue.

On the Technical Reference Manual (sluub0), on page 35, table 7-2, the last field on the State subclass is Delta Voltage, at an offset of 29, with a default value of 1. However, on page 50, section 7.4.2.3.10, the same document says offset 29 corresponds to Taper Voltage, with a default value of 4100. On page 52, section 7.4.2.3.15, Delta Voltage is once again listed with a default value of 1 at offset 29. Scanning the memory manually, I can see that the default value is 1, so it looks like it is Delta Voltage that's occupying that slot, but where is Taper Voltage located then?

Also, that subsection describes extra parameters that are not listed on table 7-2 (namely, Voltage at Charge Termination, on page 51, section 7.4.3.12, at offset 33). Which of the two sections is correct? Does this mean that the State subclass is actually two blocks wide (64 bytes), since it has a field at offset 33? Should I be storing that field to prevent it from being lost after a power loss?


Thanks

BQ27421-G1: BQ27421-G1A: remove the checking of version in golden image

$
0
0

Part Number:BQ27421-G1

We used the TI BQ27421-G1A gauge ICs in our product.

And there are 2 F/W versions (0x0108 and 0x0109) of gauge ICs on the PCB.As now.

Q-1) If we remove the checking of F/W version in the line-6 and line-7 of the golden image (*.dffs file) directly, 

could this modified golden image (*.dffs file) work on F/W versions (0x108 and 0x109) of gauge ICs?

1-1) About the line-6 and line-7 of the golden image (*.dffs file), please refer as follows:

W: AA 00 02 00
C: AA 00 08 01

Q1-2)  Should we modify any other lines in the golden image to remove the checking of F/W version, like checksum and etc.?

2) About the content of the golden image (*.dffs file), please refer as follows:

;--------------------------------------------------------
;Verify Existing Firmware Version
;--------------------------------------------------------
W: AA 00 01 00
C: AA 00 21 04
W: AA 00 02 00
C: AA 00 08 01
;--------------------------------------------------------
;SET_CFGUPDATE
;--------------------------------------------------------
W: AA 00 13 00
X: 1500
W: AA 3E 02 00
W: AA 40 01 C2 00 00 32 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
W: AA 60 0A
X: 200
W: AA 3E 02 00
C: AA 60 0A
W: AA 3E 24 00
W: AA 40 00 19 28 63 5F FF 62 00 32 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
W: AA 60 69
X: 200
W: AA 3E 24 00
C: AA 60 69
W: AA 3E 30 00
W: AA 40 0E 10 FB F8 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
W: AA 60 BE
X: 200
W: AA 3E 30 00
C: AA 60 BE
W: AA 3E 31 00
W: AA 40 0A 0F 02 05 32 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
W: AA 60 AD
X: 200
W: AA 3E 31 00
C: AA 60 AD
W: AA 3E 40 00
W: AA 40 0D F9 0F 00 00 14 04 00 09 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
W: AA 60 C9
X: 200
W: AA 3E 40 00
C: AA 60 C9
W: AA 3E 44 00
W: AA 40 05 00 32 01 C2 14 14 00 03 09 C4 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
W: AA 60 0C
X: 200
W: AA 3E 44 00
C: AA 60 0C
W: AA 3E 50 00
W: AA 40 02 BC 01 2C 00 1E 00 C8 C8 14 08 00 3C 0E 10 00 0A 46 05 14 05 0F 03 20 00 64 46 50 0A 01 90 00
W: AA 60 BB
X: 200
W: AA 3E 50 00
C: AA 60 BB
W: AA 3E 50 01
W: AA 40 64 19 DC 5C 60 00 7D 00 04 03 19 25 0F 14 0A 78 60 28 01 F4 00 00 00 00 00 00 43 80 04 01 14 00
W: AA 60 2A
X: 200
W: AA 3E 50 01
C: AA 60 2A
W: AA 3E 50 02
W: AA 40 0B 0B B8 01 2C 0A 01 0A 00 00 00 C8 00 64 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
W: AA 60 C1
X: 200
W: AA 3E 50 02
C: AA 60 C1
W: AA 3E 51 00
W: AA 40 03 A2 03 A2 07 44 00 3C 3C 01 B3 B3 01 90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
W: AA 60 FA
X: 200
W: AA 3E 51 00
C: AA 60 FA
W: AA 3E 52 00
W: AA 40 34 9E 03 00 00 01 0E DB 0E A8 24 54 13 60 05 3C 09 C4 00 C8 00 32 00 14 03 E8 01 02 33 10 04 00
W: AA 60 4E
X: 200
W: AA 3E 52 00
C: AA 60 4E
W: AA 3E 52 01
W: AA 40 0A 10 63 FF CE FF F9 00 01 02 BC 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
W: AA 60 FE
X: 200
W: AA 3E 52 01
C: AA 60 FE
W: AA 3E 59 00
W: AA 40 00 89 00 89 00 81 00 89 00 61 00 53 00 5B 00 61 00 56 00 50 00 6B 00 7F 00 FD 02 99 04 21 00 00
W: AA 60 26
X: 200
W: AA 3E 59 00
C: AA 60 26
W: AA 3E 68 00
W: AA 40 00 00 00 00 00 00 00 CB D4 1A 05 1C 98 02 D3 FF B9 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00
W: AA 60 D0
X: 200
W: AA 3E 68 00
C: AA 60 D0
W: AA 3E 69 00
W: AA 40 00 00 0B C8 7F 30 85 21 93 48 D8 DB 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
W: AA 60 49
X: 200
W: AA 3E 69 00
C: AA 60 49
W: AA 3E 6B 00
W: AA 40 EF 05 11 05 01 00 00 10 01 00 3C 00 50 3C 00 64 3C 00 20 75 4C 78 E8 00 00 00 00 00 00 00 00 00
W: AA 60 3A
X: 200
W: AA 3E 6B 00
C: AA 60 3A
W: AA 3E 70 00
W: AA 40 80 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
W: AA 60 FF
X: 200
W: AA 3E 70 00
C: AA 60 FF
;--------------------------------------------------------
;Exit CFGUPDATE
;--------------------------------------------------------
W: AA 00 42 00
X: 2000


BQ40Z60: Cycle count

$
0
0

Part Number:BQ40Z60

Hi,

In the BQ40Z60 the preset for the cycle count is 90%. Does this means it needs to see a delta of 90% in the learned capacity, for example charged up to 95% and discharged to 5%, or does it always has to be charged to a 100%?

Thanks,

Rob

BQStudio shows incorrect cell voltages with Simulator off

$
0
0

Hello,

i am trying to get BQStudio to work with my BQ76940EVM and EV2300. So far I am getting progress on how to communicate (boy, is this difficult...) with the board. Right now i am encountering the following problem:

I calibrated the Software and displaying of the cell voltages seemed to work fine. Then i noticed that i haven't openend the dip switches (Simulator still on). After opening them, i get an Cell Overvoltage Alert and after some time the board shuts down (this is good, i guess). When i check the cell voltages manually though, everything is fine. When i close the dip switches again, the software also shows normal voltages and no alert. I tried to calibrate the cell voltages by inserting each voltage by hand, but BQStudio then return the error message: 'Voltage Calibration - MAC command sent does not match MAC returned in read packet.'

I don't know what this is trying to tell me.

On another note, I still could't figure out how I tell the board to charge the batterypack. I connected a source with enough voltage and current to the PACK terminal and tried some ManufacturerAccess commands, that seemed logical, but nothing happend. The Source did not provide any current and the Voltage at the PACK terminal stayed on the Pack level (36V) and did not rise to the source's level (40V).

I hope you can clear up some of these problems. I think it is really hard to understand how to do thing with this board.


Best Regards and thank you,

Oliver Hawelka

BQ78350-R1: BQ78350-R1: Calibration Problem

$
0
0

Part Number:BQ78350-R1

Greetings

So, I'm trying to calibrate my BQ78350-R1 using Battery Managment Studio, but i've confronted problem.

While reading ManufacturerData() I can't properly read any cell voltage. All I get is zeros at any cell, what in fact is wrong. Where could be a problem and how to solve it?

I attached screenshots to show my situation.

Thanks for helping

Anton Kanyshev

BQ40Z60: What delays needed when writing to the Data Flash of BQ40Z60/BQ40Z50?

$
0
0

Part Number:BQ40Z60

What delays (us/ms?) are needed between writes/reads to the data flash of the BQ40z60/BQ40Z50?

I am using Linux I2C SMBus to access the Battery Manager. We are having issues reading and writing new data flash before an emergency shutdown is issued and it appears that delays are needed, but none are specified in the technical manual.

BQ27411-G1: Update of resistance in the field

$
0
0

Part Number:BQ27411-G1

Our product uses a bq27411-g1a gas gauge to monitor a Li-Ion battery. I have set the gauge's parameter according to our application and successfully performed a learning cycle using a GDK and our battery board. A programmed gas gauge was installed inside our product and the battery already experience some cycling. I noticed that the gauge's Qmax parameter was updated but the R_a RAM resistance profile was not. Our product is low power and consumes battery energy on a variable (not constant) current basis. The product's pulsed load profile is as follows: peak current is around 50mA, period 30s and duty cycle 25%. Since the product was made to run outside in various condition (both high and low temperatures), it must be able to update its resistance profile to match the operating condition of the battery.

My question is: Is a gauge supposed to be able update its resistance profile once deployed ?

Viewing all 35901 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>